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.