Log4J

Hinweis: Dies ist ein Auszug aus Wikipedia.de: log4j auf wikipedia

Funktionsweise

Anstatt auftretende Fehler und Infomeldung auf Standardausgabe auszugeben, wird die Nachricht dem Loggingsystem übergeben und gleichzeitig eine Einteilung der Wichtigkeit vorgenommen. Der Programmierer muss sich beim Erstellen des Programms nur um die Wichtigkeit der Meldungen Gedanken machen. Die Filterung und Art der Ausgabe kann zur Laufzeit konfiguriert werden. Die Stufen reichen von

TRACE, DEBUG, INFO, WARN, ERROR bis FATAL

Trace ist am unwichtigsten und Fatal kommt einem schweren Programmfehler gleich. Ausnahmen bilden die beiden Stufen ALL und OFF, die das Logging entweder komplett deaktivieren (OFF) oder alle Meldungen ungefiltert ausgeben (ALL).

In der Konfigurationsdatei kann die Ausgabe je nach Wichtigkeit gefiltert werden, wobei dabei die gewählte Wichtigkeit und alle wichtigeren Stufen geloggt werden. Die Reihenfolge der Prioritäts-Stufen stellt sich wie folgt:

ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF

Wenn WARN als Schwellwert für die Filterung angegeben wird, dann werden alle höherwertigen Meldungen ausgegeben (sprich: WARN, ERROR und FATAL). Mittels Appender kann je nach Wunsch auf Standardausgabe, in eine Datei, ins Systemlog oder in beliebige andere Ziele geschrieben werden bzw. in alle gleichzeitig.

Für die Einstufung der Priorität gelten folgende Richtwerte.

level Beschreibung
ALL Alle Meldungen werden ungefiltert ausgegeben
TRACE ausführlicheres Debugging (seit 1.2.12)
DEBUG allgemeines Debugging (Methode DiesUndDas wurde mit Parameter SoUndSo aufgerufen …)
INFO allgemeine Informationen (Programm gestartet, Programm beendet, Verbindung zu Host Foo aufgebaut, Verarbeitung dauerte SoUndSoviel Sekunden …)
WARN Auftreten einer unerwarteten Situation
ERROR Fehler (Exception wurde gefangen. Bearbeitung wurde alternativ fortgesetzt)
FATAL Kritischer Fehler, Programmabbruch
OFF Logging ist deaktiviert

Appender

Appender-Arten Beschreibung
ConsoleAppender Gibt auf Standardausgabe aus
FileAppender Schreibt in eine Datei
RollingFileAppender Beginnt eine neue Datei ab einer gewissen Größe
DailyRollingFileAppender Beginnt zu gewissen Zeiten mit einer neue Datei
SyslogAppender Loggt mittels Syslog-Dienst
NTEventLogAppender Schreibt ins Ereignisprotokoll des Windows-Systems
SMTPAppender Schickt bei gewissen Meldungen eine Mail.

Des Weiteren kann das Format der Nachrichten individuell konfiguriert werden. Neben der reinen Nachricht kann mittels Muster zusätzlich Wichtigkeit, Datum, Loggername, Klassenname, Methodenname bis zur genauen Codezeile ausgegeben werden. Die Namen der Logger können zwar theoretisch beliebig sein, praktisch entspricht der Name des Loggers dem Namen der Klasse. Dadurch lässt sich auch die Ausgabe einer bestimmten Klasse oder eines bestimmten Paketes separat filtern und ausgeben.

Ein weiteres nützliches Feature ist der Mapped Diagnostic Context. Dabei wird einer Contextvariablen ein Wert zugewiesen und in der Konfigurationsdatei kann darauf referenziert werden. Dabei hat jeder Thread seinen eigenen Context und kann zusätzliche Informationen wie z. B. die Adresse des Clients bei einer Serveranwendung protokollieren.