Logging unserer Anwendungen

Es ist immer wichtig zu wissen, was wann wo geschieht. Hierzu dient das Logging

Jede Anwendung protokolliert ihre Aktivitäten. Diese Protokolle oder auch Log-Dateien helfen bei der Überwachung und Fehlererkennung.

UIMBlogThema

Einführung 

Beim Start unserer Anwendungen ist als Vorgabe eingestellt, dass im Startverzeichnis ein eigenes Verzeichnis namens “logs” angelegt wird, in dem Log-Dateien abgelegt werden können. Das Format der einzelnen Einträge ist im JSON Format und kann wie folgt aussehen:

{ "app":"server-cms", "ipaddress":"127.0.0.1:49810", "timerequest":"2021-May-20 13:16:22.8244207Z", "getrequest":"GET /img/favicon.ico HTTP/1.1", "statuscode":200, "sizeresponse":318, "referer":"http://127.0.0.1:9111/index", "useragent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36"}

In dem obigen Eintrage wurde bei der Anwendung “server-cms”, die IP Adresse der Anfrage (Request), der Zeitpunkt der Anfrage, der http-Request, der Statuscode der Antwort (Response), die Menge an Daten (in Bytes) bei der Antwort, die Abfragerseite und die Anwendung (Browser) erfasst. Bitte beachtet, dass die IP Adresse zu personenbezogenen Daten nach aktuellem Datenschutz zählt und entsprechend behandelt werden muss. Nach der benötigten Zeit sollten die Daten gelöscht oder zumindest die IP-Adresse anonymisiert werden.

Flexibilität

Die Form und der Inhalt der Logging-Einträge kann in der Konfigurationsdatei “config.json” verändert werden. Der obige Eintrag hat als Formatvorlage den Eintrag 

{ "app":"server-cms", "ipaddress":"%h", "timerequest":"%t", "getrequest":"%r", "statuscode":%s, "sizeresponse":%b, "referer":"%{Referer}i", "useragent":"%{User-Agent}i"}`

Platzhalter für dynamische Einträge beginnen mit dem Zeichen %.

Dynamische Einträge

Übersicht der möglichen Platzhalter:

Platzhalter
Bedeutung
%h
IP Adresse des Clients
%i
Ident Lookup
%u
Username bei HTTP-Authentifizierung
%t
Ende der Bearbeitungszeit des Servers
%r
Clientbefehl GET etc. inkl. GET-Variablen
%>s
Statuscode der an den Client zurückgesendet wird
%b
Größe der an den Client zurückgesendeten Daten, ohne HTTP Header
%U
Der angeforderte URL-Pfad.
%{User-agent}i 
Anzeige der vom Client gesendeten Browserinformationen 
%{Referer}i 
Anzeige des vom Client gesendeten Referer

Änderung Konfiguration

In der Konfigurationsdatei config.json können folgende Einträge in Bezug zum Logging verändert werden:

Bezeichnung
Format
Beschreibung
http_logformat
Text
Log-Format für http-Request
https_logformat
Text
Log-Format für https-Request
logdir
Text
Verzeichnis für die Speicherung von Log-Dateien
logging
Text
Steuert die Protokollierung. Gültige Werte: “None”, “OnlyHttp”, “OnlyHttps”, “All”