Logging-System des PLANTA-Servers
Basis des Logging-Systems
Informationen
- Ziel der Entwicklung des hier beschriebenen Logging-Systems war die Vereinheitlichung der unterschiedlichen Mechanismen, die zur Sammlung von Meldungen dienten.
- Hierbei stand die hohe Anpassbarkeit und Zukunftssicherheit im Fokus.
- Aufgrund der seit Server 39.5 bestehenden Java-Basis lag die Auswahl eines der zahlreichen in der Java-Welt vorhandenen Logging-Systeme nahe.
- Die Logging-Fassade SLF4J gepaart mit deren nativer Implementierung Logback zählt unter diesen Systemen zu den fortgeschrittensten.
SLF4J/Logback
- Wie bei Logging-Systemen üblich wird ein Logger mit einem Namen versehen (meist der voll qualifizierte Klassenname).
- Log-Nachrichten werden vom Entwickler zusammen mit dem Log-Level, einer Einschätzung der Wichtigkeit der Meldung, diesem Logger übergeben.
- Log-Levels in SLF4J sind error > warn > info > debug > trace , wobei die Sortierung hier die Wichtigkeit der Nachricht wiederspiegelt.
- SLF4J ist eine Logging-Fassade; so können zur Kompilierzeit verschiedene Logging-Systeme eingebunden werden (nähere Informationen hierzu finden Sie auf slf4j.org).
- Eine von den Log-Nachrichten (und vom Quelltext) unabhängige Konfiguration erlaubt die Filterung von Nachrichten und formatierte Ausgabe, die üblicherweise in Dateien erfolgt.
- SLF4J im Zusammenspiel mit dessen nativer Implementierung Logback bietet besondere Konzepte, die auch im PLANTA-Server Verwendung finden:
- Mapped Diagnostic Context (MDC): Hier können im Thread-Kontext Schlüsselwert-Paare hinzugefügt werden, mit deren Hilfe Nachrichten dieses Kontextes gesondert behandelt werden können.
- Marker: Nachrichten können hierdurch "eingefärbt" werden; auch dies erlaubt eine weitreichendere Filterung (z.B. thematische Aufspaltung von Log-Dateien).
- Die Konfigurationsmöglichkeiten von Logback sind sehr reichhaltig, weshalb Details auf der entsprechenden Dokumentationsseite nachzuschlagen sind.
Hinweis
- Die bisherigen Logging-Systeme (Eigenentwicklung und Log4j) werden durch das beschriebene Logging-System abgelöst.
PLANTA-spezifische Dokumentation
Nachrichtenidentifikatoren
Details
- Log-Nachrichten, die ein Log-Level von error , warn oder info besitzen, erhalten einen Nachrichtenidentifikator.
- Dieser wird in dem Nachrichtentext in Form einer Nummer angegeben.
- Über diesen Identifikator kann die Beschreibung der Nachricht und, sollte es sich um einen Fehler handeln, Behebungsmaßnahmen eingesehen werden.
- Ein Verzeichnis aller mit Identifikatoren versehenen Nachrichten ist hier zu finden.
Thematische Einordnung von Nachrichten über Marker
Details
- In PLANTA-Server dient das Marker-Konzept zur thematischen Einordnung einer Nachricht.
- Dies erlaubt beispielsweise, einem Benutzer mit fachlichem Hintergrund für ihn wichtige Nachrichten auszugeben, ohne dass administrative Benutzer von für sie unwichtigen Informationen überflutet werden.
- So können für jeden thematischen Komplex Log-Dateien konfiguriert werden, in die die entsprechenden Nachrichten einsortiert werden, wobei auch Überschneidungen berücksichtigt werden können.
- In PLANTA-Server werden nur die mit Identifikator versehenen Log-Nachrichten entsprechend markiert; das Nachrichtenverzeichnis gibt die Zuordnungen an.
Aktualisierung der Konfiguration im laufenden Betrieb
Information
- Die mitgelieferte Konfiguration befindet sich im Installationsverzeichnis unter conf/logback.xml.
Details
- Logback ermöglicht Konfigurationsänderungen im laufenden Betrieb, sowohl über die Logback-API als auch über die Konfigurationsdatei.
- Der folgende Ausschnitt zeigt, wie in der mitgelieferten Konfiguration die automatische Aktualisierung der Konfiguration eingeschaltet wird:
<configuration scan="true" scanPeriod="1 minute">
[...]
</configuration>
CODE
- Die Anweisung scan="true" aktiviert hier die Aktualisierung, über scanPeriod="1 minute" prüft Logback die Konfigurationsdatei jede Minute auf Änderungen.
- Das in PLANTA-Server implementierte Logging-System umfasst auch native Teile, die von Logback selbst nicht entsprechend aktualisiert werden können.
- Daher muss die folgende PLANTA-spezifische Anweisung in der zu aktualisierenden Konfigurationsdatei vorhanden sein (wie in der mitgelieferten Konfiguration enthalten):
<contextListener class="de.planta.server.logging.NativeLevelChangePropagator"/>
CODE
- Zu beachten ist bei der Aktualisierung, dass auch nach Ablauf der konfigurierten
scanPeriod
die Konfigurationsaktualisierung nicht zwingend sofort durchgeführt wird. - Dem liegt zugrunde, dass Logback aus Performance-Gründen die Prüfung nur beim Auftreten jeder 16. Log-Nachricht durchführt.
- Somit ist es u.U. erforderlich, eine Aktion zu starten (z.B. eine Client-Verbindung herzustellen), um die Aktualisierung zu starten.
Log-Dateien
Details
- Über die mitgelieferte Konfiguration werden alle Log-Dateien im Verzeichnis
log/
des Arbeitsverzeichnisses von PLANTA-Server angelegt. - Für den Betrieb relevante Log-Nachrichten werden hier in der Datei
PLANTAServer.log
ausgegeben. - Über eine größenbasierte Rotation (mit Schwellwert von 5 MB) wird eine Historie von maximal 10 komprimierten Dateien angelegt, die nach dem Schema
PLANTAServer.[NUMMER].log.zip
benannt sind. - Ist ein session-basiertes Logging aktiv (die Vorgehensweise hierzu siehe das nächste Kapitel), so wird für jede Session eine Datei
PLANTASession-[SessionID].log
erstellt, in die zur Session gehörige Nachrichten ausgegeben werden. - Session-Logfiles sind defaultmäßig mit Rotation eingerichtet.
Session-basiertes Logging für Fehleranalysen
Information
- Um die Erstellung eines session-basierten Logfiles für die Fehleranalyse zu aktivieren, ist es nicht mehr notwendig, die Anpassungen in der
logback.xml
-Datei vorzunehmen. PLANTA stellt eine zweite Dateilogback_debug.xml
zur Verfügung, die bereits alle notwendigen Einstellungen beinhaltet. Die beiden Dateien müssen lediglich nur umbenannt werden, damit das Logging aktiviert wird und die Umbenennung wieder rückgängig gemacht werden, wenn das Logging ausgeschaltet werden soll.
Vorgehensweise
- Die Datei
logback.xml
beliebig umbenennen. - Die Datei
logback_debug.xml
inlogback.xml
umbenennen. - Nachdem das Logfile erstellt wurde, die Umbenennungen der Dateien rückgängig machen.
Spezielle Namensräume
Namensraum | Beschreibung |
---|---|
de.planta.server | Der Namensraum des PLANTA-Servers |
de.planta.server.native | Log-Nachrichten aus den nativen Programmteilen werden innerhalb dieses Namensraumes ausgegeben |
de.planta.server.python | Aus dem Python-Kontext über die Schnittstelle gesendete Nachrichten werden innerhalb dieses Namensraumes ausgegeben |