Technik/Installation

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>
  • 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"/>
  • 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.

  • Die Log-Dateien werden täglich rolliert und nach jeweils 14 Tagen gelöscht.

  • 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 Datei logback_debug.xml zur Verfügung, die bereits alle notwendigen Einstellungen beinhaltet. Welche Datei für die Konfiguration verwendet wird, kann im Parameter logback definiert werden.

Vorgehensweise

  • Die gewünschte Datei im Parameter logback definieren.

  • Nachdem das Logfile erstellt wurde, die Konfiguration bei Bedarf wieder ändern.

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