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

Top-Malware im November: Infostealer Formbook bleibt Nummer 1

Sein Anteil an allen Infektionen steigt in Deutschland auf 18,5 Prozent. Das Botnet Androxgh0st integriert…

2 Wochen ago

Google schließt schwerwiegende Sicherheitslücken in Chrome

Betroffen sind Chrome 131 und früher für Windows, macOS und Linux. Angreifer können unter Umständen…

2 Wochen ago

Data Analytics: Dienstleister wachsen zweistellig

Marktforscher Lündendonk erwartet für das Jahr 2025 ein durchschnittliches Umsatzwachstum von 14,9 Prozent.

2 Wochen ago

Open-Source-Malware auf Rekordniveau

Alarmierender Anstieg von Open-Source-Malware / Seit 2019 haben Sonatype-Analysen mehr als 778.500 bösartige Pakete aufgedeckt

2 Wochen ago

Bayerische KI-Agentur bietet KI-KOMPASS

Das KI-Werkzeug "BAIOSPHERE KI-KOMPASS" soll Unternehmen den Einstieg in KI erleichtern.

2 Wochen ago

Cloudflare: Weltweiter Internettraffic wächst 2024 um 17,2 Prozent

Das Wachstum konzentriert sich wie im Vorjahr auf das zweite Halbjahr. Google dominiert bei den…

2 Wochen ago