Tinylog 1.3 bringt einige Neuerungen von Java 9
Das Open-Source-Logging-Framework fĂĽr Java und Android kann unter anderem nanosekundengenau loggen. AuĂźerdem nutzt es die Java-9-Standard-API zum Ermitteln der Prozess-ID und von Stack-Trace-Elementen.
Nach zwei Release Candidates hat das tinylog-Team nun Version 1.3 des quelloffenen Logging-Frameworks für Java und Android veröffentlicht. Der Fokus lag auf der Implementierung neuer Funktionen der aktuellen Java-Plattform. Unter anderem bringt Java 9 erstmals eine API zur Abfrage der aktuellen Systemzeit in Nanosekunden, aber auch die mit Java 8 eingeführten Lambdas kommen zum Einsatz.
Java 8 und 9
Auch wenn tinylog 1.3 Funktionen von Java 8 und 9 nutzen kann, benötigt es lediglich Java 6. Es lässt sich zudem für Android ab API Level 1 einsetzen. Die bisher noch vorhandene Unterstützung für JDK 5 haben die Macher dagegen eingestellt.
tinylog 1.3 versieht im Zusammenspiel mit Java 9 die Einträge im Log mit auf Nanosekunden genauen Zeitstempeln. Außerdem setzt das Framework auf die neue Standard-API der aktuellen Java-Plattform zum Ermitteln der Prozess-ID und Stack-Trace-Elementen. Mit einer weiteren Neuerung setzt tinylog 1.3 auf Lambdas, die bereits in Java 8 enthalten waren. Der Vorteil zeigt sich bei aufwendigen Berechnungen: Das Framework wertet sie nur dann aus, wenn es die Logging-Nachricht tatsächlich ausgibt wie in folgendem Beispiel:
Logger.trace("Number: {}", () -> expensiveToCompute());
Ausgaben in Datenbanken und Standard-Streams
Neu ist zudem, dass der JDBC Writer Prepared Statements für das Einfügen von Log-Einträgen in relationale Datenbanktabellen verwendet. Damit entfällt das erneute Parsen des SQL-Befehls für jeden Log-Eintrag. Eine kleine nützliche Änderung ist, dass Entwickler konfigurieren können, welche Log-Einträge in welchem Standard-Datenstrom landen.
Bisher übergab tinylog alle Warnungen und Fehler an Standard Error (stderr) und alle anderen Einträge an Standard Output (stdout). Auch wenn das allgemein sinnvoll sein mag, führt es beispielsweise dazu, dass Eclipse standardmäßig alle Warnungen und Fehler rot und alle anderen Meldungen schwarz darstellt. Durch die Konfigurationsoption lassen sich nun beispielsweise alle Meldungen des Frameworks in stderr ausgeben.
Weitere Details lassen sich der Ankündigungsliste entnehmen. Die Besonderheit von tinylog ist seit jeher der Einsatz einer statischen Logger-Klasse, durch die das Erzeugen einer Instanz des Loggers für jede einzelne Klasse überflüssig ist. Das Framework lässt sich über die Fluent API oder über Properties-Dateien konfigurieren. Das Open-Source-Tool steht auf der Projekt-Site zum Download bereit. (rme)