Zur Konfiguration der Logging-Funktion verwendet man Handler und Formatter. Ein Handler erlaubt die Kontrolle über den Zielort der Log-Statements. Der Formatter kontrolliert, wie man schon vermuten kann, die tatsächliche Ausgabe. Das API enthält die folgenden Handler: ConsoleHandler, SocketHandler und FileHandler. Durchsucht man die API Javadocs, wird man auf weitere Handler treffen, die aber nur Support-Classes für andere Handler sind. Das Standard-API enthält nur zwei Formatter – SimpleFormatter und XMLFormatter.
Die gesamte Logging-Konfiguration wird mit Hilfe einer Property-Datei erledigt, die aus dem Lib-Verzeichnis im JRE-Verzeichnis ausgelesen wird. Diese Datei heißt logging.properties. Die Logging-Eigenschaften lassen sich auch dynamisch anpassen, indem man einen Handler oder Formatter deklariert und der Logger-Instanz hinzufügt. Unter Listing A befindet sich eine kleine Testklasse, die neben dem Default-Console-Handler einen File-Handler einrichtet. Standardmäßig verwendet dieser File-Handler den XMLFormatter. Die Datei (Output) findet man in Listing B.
Die Logging-Eigenschaften lassen sich anpassen, indem man mit Hilfe einer Java-Systemeigenschaft (java.util.logging.config.class oder java.util.logging.config.file) eine alternative Property-Datei oder Klasse spezifiziert. Daraufhin wird die Konfigurationsklasse aufgerufen, die für die Konfiguration zuständig ist.
Standard API oder log4j?
Nach der Untersuchung des Standard-Logging-API ist es meiner Meinung nach besser, beim log4j-Paket zu bleiben, wenn man eine robuste Logging-Implementierung benötigt. Das Logging-API ist ausreichend, ihm fehlen aber viele der in log4j enthaltenen Funktionen. Log4j enthält zum Beispiel bereits eine „File Rotation Class“, die auf dem Datum basierend rotieren kann. (Man könnte dazu auch die FileHandler-Klasse im Logging-API erweitern, aber warum sollte man sich mehr Arbeit machen?)
Ein weiterer Vorteil von log4j ist die Leichtigkeit, mit der es sich konfigurieren lässt, indem man einfach ein Konfigurationsobjekt mit einem spezifizierten Property-File lädt. Die Methode des Logging-API für die Spezifizierung der Datei oder der Klasse als Systemeigenschaft scheint kompliziert zu sein, und in meinen Projekten lege ich wert auf einen einfachen Anfang. Log4j verfügt auch über ein sehr viel robusteres Formatierungs-System, das es ermöglicht, einfache Vorlagen auf den Logging-Output anzuwenden, ohne dass man erst eine zusätzliche Klasse zur Erweiterung des Formatters schreiben müsste. Die zahlreichen für das log4j-Paket verfügbaren Add-on-Programme und Handler machen es zu einer hervorragenden Wahl, da fast alles, was man irgendwann einmal brauchen könnte, bereits fertig zur Verfügung steht.
Es gibt auch Möglichkeiten, das Logging-API zu einer robusten Lösung für viele Logging-Anforderungen auszubauen, momentan scheint das log4j-Paket jedoch die bessere Lösung anzubieten. Benötigt man allerdings nur ein wenig einfaches Console-, Socket- oder File-Logging, kann man von dem bereits in das JDK integrierten Logging-API profitieren.
Neueste Kommentare
Noch keine Kommentare zu Java-Logging-API im Vergleich mit log4j
Kommentar hinzufügenVielen Dank für Ihren Kommentar.
Ihr Kommentar wurde gespeichert und wartet auf Moderation.