Suche

Logging mit Java: Apache Log4j 2.8 erschienen

Hartmut Schlosser

Das Apache-Projekt Log4j ist eines der populärsten Logging-Frameworks in Java. Die nun erschienene Version 2.8 wartet mit zahlreichen Bugfixes und neuen Features auf.

Das Logging Framework Apache Log4j ist in Version 2.8 verfügbar. Über 30 Neuerungen und zahlreiche Bugfixes haben es in das Release geschafft. So ist es mit der neuen Version möglich, das RollingFileAppender-Log direkt in Archivdateien zu integrieren. Eine neue ThreadContext::getThreadContextMap API Methode erlaubt eigene ThreadContext-Implementierungen. Zudem sind ein neuer Apache Cassandra Appender, Unterstützung für Variablen in GelfLayout-Felder und Lookups in Properties-Default-Werten hinzugekommen.

Garbage-free Logging

Weiter verfeinert wurde das Garbage-freie Logging, das seit Log4j 2.6 ins Tool integriert ist. Im sogenannten Garbage-free Steady State Logging  werden Objekte und Buffer wiederverwendet, anstatt immer neue temporäre Objekte anzulegen. Ein Low-Garbage-Modus ist ebenfalls verfügbar, der nicht komplett frei von Garbage-Ansammlungen ist, allerdings nicht die ThreadLocal-Felder verwendet. Dieser Modus wird standardmäßig verwendet, wenn Log4j erkennt, dass es in einer Web-Applikation verwendet wird.

In Log4j 2.8 wurden nun eine Reihe weiterer Filter und Pattern Layout Converter auf das Garbage-freie Logging eingestellt, sodass diese keine temporären Objekte während des Logging-Vorgangs mehr nutzen. Der klassische Modus, der alle Garbage-free-Logiken ignoriert, ist allerdings weiterhin verfügbar.

Lesen Sie auch: 7 Logging Tools im Vergleich: Splunk – Loggly – Graylog – Papertrail – TestView – Logstash – SumoLogic

Logj4

Bereits 20 Jahre hat Log4j auf dem Buckel. Ceki Gülcü entwickelte das Logging-Framework 1996, das heute in vielen Projekten kommerzieller oder Open-Source-Software als Standard gilt. Mittlerweile ist das Logging-Framework fester Bestandteil des Apache Logging-Projektes, ist nach wie vor quelloffen (Apache-Lizenz 2.0) und Vorbild für zahlreiche Logging-Tools, die sich nicht nur namentlich, sondern auch funktionell nah am Vorbild orientieren. Diese sind allerdings nur zum Teil ebenfalls im Logging-Projekt der Apache Foundation beheimated (etwa Log4php oder Log4cxx).

Log4j dient in erster Linie dazu, auftretende Fehler auf der Standardausgabe auszugeben, sondern Meldungen über Logger an den Appender (das entsprechende Loggingsystem) weiterzuleiten. Log4j ermittelt, wohin die Weiterleitung stattfinden muss, gleichzeitig aber auch, ob die Weiterleitung überhaupt stattfindet. Diese Entscheidung basiert auf dem sogenannten Log-Level, also auf der jeweiligen Wichtigkeit des Fehlers oder der Meldung.

Mit Apacha Log4j 2 veröffentlichten die Entwickler des Projektes eine von Grund auf überarbeitete Fassung, die viele Fehler der vorherigen Version 1.x ausbesserte, aber essentielle und wichtige Teile der Vorversion übernahmen. Revolutionär war insbesondere die Einführung asynchroner Logger, bei denen I/O-Operationen in einem separaten Thread ausgeführt wurden. Ein bis zu 68-fach höherer Datenfluss konnte im Vergleich zum synchronen Modell festgestellt werden. Zudem gab es seit der Einführung 2014 endlich die Möglichkeit Log4j mit JSON zu konfigurieren und eine Plug-in-Architektur wurde implementiert.

Get it!

Log4j 2.8 benötigt Java ab Version 7. Eingeschränkte Kompatibilität zur Log4j 1.x-Entwicklungslinie ist über die log4j-1.2-api Komponente gegeben.

Geschrieben von
Hartmut Schlosser
Hartmut Schlosser
Hartmut Schlosser ist Redakteur und Online-Koordinator bei Software & Support Media. Seine Spezialgebiete liegen bei Java-Enterprise-Technologien, JavaFX, Eclipse und DevOps. Vor seiner Tätigkeit bei S & S Media studierte er Musik, Informatik, französische Philologie und Ethnologie.
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.