Migration von Log4J zu Logback Classic

vorhergehende Artikel in: Java
22.05.2022

Nach den diversen schlimmen Nachrichten Ende letzten Jahres (Log4Shell) habe ich den Entschluss gefasst, von Log4J Abschied zu nehmen und eine andere Logging-Lösung einzusetzen.

Diesen Entschluss habe ich nun umgesetzt. Ich habe mich für Logback Classic als Ersatz für Log4J entschieden. Einen Großteil der Arbeit konnte ich automatisiert mittels Suchen und Ersetzen durchführen.

Danach fing die Kleinarbeit an: Logback bietet keine dedizierten Logging-Methoden für andere Datentypen als String an - Log4J bot hier darüber hinaus je eine für Object und die Fundamentaldatentypen wie int oder double an - dadurch musste ich alle die Stellen händisch ersetzen, wo keine Strings geloggt wurden. Referenztypen konnte ich nicht einfach mit einem .toString() ergänzen, da die Gefahr einer NullPointerException bestand, sollte der übergebene Wert eine Null-Referenz sein. Daher habe ich an diesen Stellen mittels Suchen und Ersetzen mit regulären Ausdrücken nachgearbeitet.

Bei den Fundamentaldatentypen habe ich mir geholfen, indem ich zunächst einfach einen leeren String voranstelte - so wurde aus ...debug(array.length) dann ...debug(""+array.length) - damit war alles wieder übersetzbar. Später habe ich dann entsprechend häufig auftretende Muster nochmals mittels Suchen und Ersetzen verbessert - so etwa die Ausgabe der Größe von Arrays mittels length oder die von Collections mittels size() - weiterhin habe ich Methodenaufrufe, die mit is begannen und Zugriffsmethoden auf Properties vom Typ boolean waren entsprechend durch die statischen toString(...) Methoden der jeweiligen Klassentypen ersetzt.

Nachdem ich kontrolliert hatte, dass das Gesamtprojekt immer noch kompilierbar war, habe ich diverse Teile meines Quellcodes, die sich direkt auf die API von Log4J bezogen - wie zum Beispiel die speziellen Varianten der Loggingkonfiguration oder die diversen selbst geschriebenen Appender - angepasst, so dass sie mit Logback Classic funktionierten.

Anschließend kümmerte ich mich um die sQLshell und dWb+ - es musste sichergestellt werden, dass die Installer beider Anwendungen weiterhin funktionierten und die installieretn Versionen ebenfalls. Daran schlossen sich entrsprechende Tests und - falls benötigt - Anpassungen an den Plugins beider Anwendungen statt.

Damit stehen jetzt sQLshell und dWb+ in neuen Versionen bereit - mit entsprechend neuen Versionen einiger ihrer Plugins.

All diese Änderungen erledigte ich auf einem Feature-Branch. Nachdem ich noch eine letzte SNAPSHOT-Version meiner Bibliotheken veröffentlicht hatte, veröffentlichte ich noch eine RELEASE-Version - beides vom master-Branch. Nun war es an der Zeit, den Feature-Branch auf den master zu mergen und eine neue Minor-Version mit den Umstellungen als SNAPSHOT-Version zu veröffentlichen.

Alle Artikel rss Wochenübersicht Monatsübersicht Codeberg Repositories Mastodon Über mich home xmpp


Vor 5 Jahren hier im Blog

  • xBrowserSync in Docker

    29.03.2021

    Nachdem ich schon längere Zeit nicht mehr über neue Dienste in meinem Docker-Zoo berichtet habe, habe ich in der vergangenen Woche wieder einmal einen Neuzugang begrüßen dürfen...

    Weiterlesen

Neueste Artikel

  • Asymmetrische Kryptographie

    Ich habe mich mit der Idee schon länger getragen: Nochmal einen Rundumschlag zu asymmetrischer Kryptographie zu machen. Dabei werde ich mich auf Demonstrationen der einzelnen Konzepte und Operationen mit Beispielcode konzentrieren und zu jedem der vorgestellten Konzepte mehr oder weniger ausführlich bezüglich der Einsatzszenarien und Vor- und Nachteile Stellung beziehen

    Weiterlesen
  • Windows? Nur noch gegen Bezahlung!

    Ich habe mich nun völlig von Windows - der armseligen Ausrede für ein Computerbetriebssystem aus Redmond - abgenabelt

    Weiterlesen
  • Vergleich Analoger und Digitaler Identitäten

    Eine Präsentation zum besseren Verständnis der Konzepte hinter digitalen Identitäten

    Aktualisierung vom 16. März 2025

    Aktualisierung der Präsentation mit einem Beispiel aus einem Film der 1980er Jahre und Betonung des Fakts, dass das Subjekt überhaupt nicht bemerken muss, dass eine Identität erstellt wird...

    Aktualisierung vom 17. August 2025

    Ein weiteres Beispiel wurde hinzugefügt.

    Aktualisierung vom 30. März 2026

    Aktualisierung der Präsentation: Erläuterung der Möglichkeit, mehr als ein Zertifikat für dasselbe Schlüsselpaar auszustellen und Exkurs zu Transport Layer Security als Beispiel der Forderung des Vorweisens bestimmter Arten digitaler Identitäten.
    Weiterlesen

Manche nennen es Blog, manche Web-Seite - ich schreibe hier hin und wieder über meine Erlebnisse, Rückschläge und Erleuchtungen bei meinen Hobbies.

Wer daran teilhaben und eventuell sogar davon profitieren möchte, muss damit leben, daß ich hin und wieder kleine Ausflüge in Bereiche mache, die nichts mit IT, Administration oder Softwareentwicklung zu tun haben.

Ich wünsche allen Lesern viel Spaß und hin und wieder einen kleinen AHA!-Effekt...

PS: Meine öffentlichen Codeberg-Repositories findet man hier.