Der PPM-Server verwendet zur Ausgabe von Systemmeldungen (log-Ausgaben) die Java-Standardschnittstelle log4J2. log4J2 ist ein flexibles Framework zur Steuerung der Ausgabe von Java-Anwendungsmeldungen über verschiedene Medien (Ausgabekanäle). Die Konfiguration der log4J-Schnittstelle erfolgt entweder in einer XML-Datei oder einer properties-Datei. Sie setzt sich aus drei Komponenten zusammen: Logger (Sammler), Layout (Formatierung) und Appender (Ausgabe)
PPM liest die log4J2-Konfiguration aus einer Property-Datei.
Logger
Die Java-Anwendung übergibt ihre Meldungen an einen bestimmten Logger (Sammler), der diese je nach Art der Meldung weiterverarbeitet. Meldungen können vom Typ (Loglevel) ALL, TRACE, INFO, WARN, ERROR, FATAL, OFF sein.
Loglevel |
Beschreibung |
ALL |
Alle Meldungen werden ungefiltert ausgegeben. |
TRACE |
Sehr ausführliche Laufzeitmeldungen, häufig mit Ausgaben kompletter Fehlerzustände der Applikation |
DEBUG |
Ausführliche Laufzeitmeldungen, die oft den internen Zustand der Applikation beschreiben |
INFO |
Allgemeine Informationen oder Warnungen |
WARN |
Hinweise auf nicht laufzeitkritische Applikationszustände, z.B. fehlende oder falsche Konfigurationen |
ERROR |
Fehler, die oft zum Abbruch der aktiven Komponente führen |
FATAL |
Fehler, die zum Abbruch der Anwendung führen, z.B. Ressourcenmangel |
OFF |
Keine log-Ausgaben |
In der log4J-Konfigurationsdatei wird ein Logger durch die folgenden Zeilen definiert:
logger.<key>.name = <logger name>
logger.<key>.level = <log level>
logger.<key>.appenderRef.<appender key 1>.ref = <appender name 1>
logger.<key>.appenderRef.<appender key 2>.ref = <appender name 2>
logger.<key>.appenderRef.<appender key n>.ref = <appender name n>
Die Schreibweise der Logger-Namen beachtet die Groß- und Kleinschreibung. Die Namen bilden eine hierarchische Struktur. Das Wurzelelement ist der root-Logger. Die Hierarchieebenen werden durch das Zeichen Punkt (.) getrennt. Die höhere Hierarchieebene vererbt ihre Konfiguration an die niedrigere, die dann von spezifischen Einstellungen überschrieben wird.
Die folgende Tabelle veranschaulicht die Vererbungshierarchie:
Logger Name |
zugewiesener Loglevel |
Ererbter Loglevel |
rootLogger |
INFO |
keiner |
logger.LOG |
DEBUG |
INFO |
logger.LOG.SRV |
ERROR |
INFO |
Appender
Der Logger gibt die Meldungen an die Appender (Empfänger) weiter, die die Meldungen dann in einer bestimmten Form (Layout) ausgeben. Die Appender unterscheiden sich in der Art der Ausgabe, beispielsweise:
PPM Beispiel Appender |
Beschreibung |
console |
Meldungen werden an der Konsole ausgegeben |
logFile |
Meldungen werden in eine Datei geschrieben |
errorFile |
Fehlermeldungen werden in eine Datei geschrieben |
In der log4J2-Konfigurationsdatei wird ein Appender durch die folgenden Zeilen definiert:
appender.<key>.name = <appender name>
appender.<key>.type = [File | Console]
Für einen Logger können mehrere Appender angegeben werden. Alle Appender eines Loggers geben die Meldungen entsprechend ihrer Konfiguration aus.
Es gibt auch Appender, die die Meldungen in das log-System des Betriebssystems schreiben, als Mail versenden oder die Meldungen über das Netzwerk an einen bestimmten log-Server schicken.
Layout
Das Format der Ausgabe lässt sich durch bestimmte Formatvorlagen festlegen. Diese Formatvorlagen werden für den gewünschten Appender angegeben. Die wichtigsten Platzhalter für eine Formatvorlage sind:
Platzhalter |
Beschreibung |
%c |
Kategorie / Logger (entspricht PPM-Modul) |
%C |
Klassenname, vollqualifiziert |
%d |
Datum, z.B. %d{HH:mm:ss,SSS} |
%xd |
Datum, das auch das Token 'ppmdate' unterstützt, z. B. %xd{ppmdate}. 'ppmdate' ist ein lokalisiertes Standardmuster entsprechend dem Gebietsschema. |
%F |
Dateiname |
%L |
Zeilennummer |
%m |
Die Meldung selbst |
%M |
Name der Methode |
%n |
Zeilenumbruch |
%p |
Priorität, Level (INFO, WARN, ERROR, etc.) |
%t |
Name des Thread |
%throwable{0} |
Ausgabe von Stacktraces wird unterdrückt. |
Beispiel
Die Formatvorlage [%t] %-5p %C - %m%n ergibt folgende Ausgabe:
[main] INFO org.apache.log4j.Action - Der Prozess wurde gestartet