Java-Logging-API im Vergleich mit log4j

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.

Page: 1 2 3

ZDNet.de Redaktion

Recent Posts

Identitätsdiebstahl: 58 Prozent der Deutschen sorgen sich um digitales Erbe

Sie befürchten einen Missbrauch der Identitäten von Verstorbenen. 60 Prozent befürworten deswegen eine Klärung des…

7 Tagen ago

Bericht: Samsung plant massiven Stellenabbau

In einigen Unternehmensbereichen sind angeblich bis zu 30 Prozent der Beschäftigten betroffen. Samsung spricht in…

7 Tagen ago

Kritische Lücken in Adobe Reader und Acrobat

Sie erlauben eine Remotecodeausführung. Betroffen sind alle unterstützten Versionen von Adobe Reader und Acrobat für…

1 Woche ago

Google stopft weitere fünf Löcher in Chrome 128

Betroffen sind Chrome für Windows, macOS und Linux. Das von den Anfälligkeiten ausgehende Risiko stuft…

1 Woche ago

Steuerstreit mit der EU: Apple muss 13 Milliarden Euro nachzahlen

Der Gerichtshof der Europäischen Union entscheidet „endgültig“ über den Rechtsstreit. Dem Urteil zufolge sind von…

1 Woche ago

September-Patchday: Microsoft schließt kritische Zero-Day-Lücke in Windows Update

Sie betrifft ältere Versionen von Windows 10. Ein weiterer kritischer Bug steckt aber auch in…

1 Woche ago