<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Log4j</id>
	<title>Log4j - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Log4j"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Log4j&amp;action=history"/>
	<updated>2026-05-25T18:56:26Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Log4j&amp;diff=105844&amp;oldid=prev</id>
		<title>imported&gt;Zeikonaut: Typo ausgebessert in Kommentar eines Weblinks</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Log4j&amp;diff=105844&amp;oldid=prev"/>
		<updated>2025-12-15T23:43:10Z</updated>

		<summary type="html">&lt;p&gt;Typo ausgebessert in Kommentar eines Weblinks&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Infobox Software&lt;br /&gt;
| Name                          = Log4j&lt;br /&gt;
| Logo                          = &lt;br /&gt;
| Screenshot                    = &lt;br /&gt;
| Beschreibung                  = &amp;lt;!-- Beschreibung des Screenshots! --&amp;gt;&lt;br /&gt;
| Maintainer                    = Scott Deboy, Ralph Goers, Gary Gregory, Christian Grobmeier&lt;br /&gt;
| Hersteller                    = [[Apache Software Foundation]]&lt;br /&gt;
| Management                    = &lt;br /&gt;
| AktuelleVersion               = &amp;lt;!--wikidata--&amp;gt;&lt;br /&gt;
| AktuelleVersionFreigabeDatum  = &amp;lt;!--wikidata--&amp;gt;&lt;br /&gt;
| AktuelleVorabVersion          = &lt;br /&gt;
| AktuelleVorabVersionFreigabeDatum = &lt;br /&gt;
| Betriebssystem                = [[plattformübergreifend]]&lt;br /&gt;
| Programmiersprache            = [[Java (Programmiersprache)|Java]]&lt;br /&gt;
| Kategorie                     = &lt;br /&gt;
| Lizenz                        = [[Apache-Lizenz]] 2.0&lt;br /&gt;
| Deutsch                       = &lt;br /&gt;
| Website                       = [https://logging.apache.org/ logging.apache.org]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Log4j&amp;#039;&amp;#039;&amp;#039; ist ein [[Framework]] für das [[Logging]] von Anwendungsmeldungen in [[Java (Programmiersprache)|Java]].&lt;br /&gt;
Innerhalb vieler [[Open Source|Open-Source]]- und kommerzieller Softwareprodukte hat es sich über die Jahre zu einem [[Industriestandard|De-facto-Standard]] entwickelt. Log4j gilt als Vorreiter für andere Logging-Frameworks, auch in anderen Programmiersprachen.&lt;br /&gt;
&lt;br /&gt;
== Geschichte ==&lt;br /&gt;
[[Datei:Log4js.png|mini|Logo von Log4js]]&lt;br /&gt;
Das Projekt wurde von Ceki Gülcü 1996 während seiner Arbeit am [[IBM]]-Entwicklungslabor in Zürich gegründet. Heute ist es ein Teil des [[Apache Logging|Logging]]-Projekts der [[Apache Software Foundation]] und steht unter der [[Apache-Lizenz]] 2.0. Es entstand zu einer Zeit, als es in den Java-Standardbibliotheken noch keine Logging-Mechanismen gab. Heutzutage ist es durch seine Ausgereiftheit und Konfigurierbarkeit für viele [[Softwareentwickler]] das Log-System der ersten Wahl.&lt;br /&gt;
&lt;br /&gt;
Die Ausstrahlung der Log4j-Konzepte auf andere Programmiersprachen bzw. Plattformen ist so groß, dass es mittlerweile etliche Adaptionen gibt. Einige werden vom Apache Logging Projekt selbst gepflegt. Zum Beispiel:&lt;br /&gt;
&lt;br /&gt;
* log4cxx für [[C++]] mit zu Log4J kompatiblen Konfigurationsdateien&lt;br /&gt;
* log4Net für das [[.Net-Framework]]&lt;br /&gt;
* log4php für [[PHP]]&lt;br /&gt;
&lt;br /&gt;
Viele Varianten werden jedoch außerhalb von Apache Logging entwickelt:&lt;br /&gt;
&lt;br /&gt;
* log4C für [[C (Programmiersprache)|C]]&lt;br /&gt;
* log4cplus für [[C++]]&lt;br /&gt;
* log4cpp für C++&lt;br /&gt;
* Log4Qt für [[Qt (Bibliothek)|Qt]]&lt;br /&gt;
* Log4js für [[JavaScript]]&lt;br /&gt;
* log4perl für [[Perl (Programmiersprache)|Perl]]&lt;br /&gt;
* log4D für [[Borland Delphi|Delphi]]&lt;br /&gt;
* log4sh für [[Unix-Shell]]s&lt;br /&gt;
* log4plsql für [[PL/SQL|Oracle PL/SQL]]&lt;br /&gt;
* log4sas für [[SAS Institute]]&lt;br /&gt;
* AndroidLoggingLog4J&amp;lt;ref&amp;gt;{{Internetquelle |autor=Rolf Kulemann |url=http://code.google.com/p/android-logging-log4j/ |titel=android-logging-log4j |titelerg=Logging with Log4J in [[Android (Betriebssystem)|Android]] ¦ providing LogCat appender and configuration facade |abruf=2011-11-29}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Modul &amp;#039;&amp;#039;logging&amp;#039;&amp;#039; für [[Python (Programmiersprache)|Python]]&amp;lt;ref&amp;gt;{{Internetquelle |url=https://docs.python.org/release/2.5.2/lib/module-logging.html |titel=14.5 logging -- Logging facility for Python |abruf=2020-03-16}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* logger für [[LabVIEW]]&amp;lt;ref&amp;gt;{{Internetquelle |url=https://www.vipm.io/package/field_rnd_services_logger/ |titel=Logger Toolkit for LabVIEW – Download – VIPM by JKI |abruf=2022-02-10}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Seit Juli 2014 ist Log4j 2 als Nachfolger des Log4j 1.x verfügbar.&lt;br /&gt;
&lt;br /&gt;
== Das Apache-Logging-Projekt ==&lt;br /&gt;
&lt;br /&gt;
Das [[Apache Logging|Apache-Logging]]-Projekt versucht, Log4j-ähnliche Systeme für diverse Programmiersprachen zusammenzuführen. Bisher sind das log4j, log4cxx, log4net, log4php&amp;lt;ref name=&amp;quot;apache log4php&amp;quot;&amp;gt;{{Internetquelle |url=https://logging.apache.org/log4php/ |titel=Apache log4php – Welcome – Apache log4php |abruf=2020-03-16}}&amp;lt;/ref&amp;gt; und Chainsaw (ein Logdatei-Betrachter und -Analysewerkzeug).&amp;lt;ref name=&amp;quot;apache logging&amp;quot;&amp;gt;{{Internetquelle |url=https://logging.apache.org/index.html |titel=Welcome – Apache Logging Services |abruf=2020-03-16}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Außerdem werden sogenannte Companions entwickelt, die zusätzliche Funktionalität für Apache Log4j bereitstellen.&lt;br /&gt;
&lt;br /&gt;
== Funktionsweise ==&lt;br /&gt;
Anstatt auftretende Fehler und Infomeldungen auf der Standardausgabe auszugeben, dient Log4j dazu, die Meldungen über sogenannte Logger an das gewählte Ausgabeziel weiterzuleiten („Appender“).&amp;lt;ref&amp;gt;{{Internetquelle |url=https://logging.apache.org/log4j/2.x/manual/appenders.html |titel=Log4j 2 Appenders |werk=Apache Logging Services Project |sprache=en |abruf=2023-01-02}}&amp;lt;/ref&amp;gt; Neben der Auswahl des Ausgabeziels (z.&amp;amp;nbsp;B. eine [[Logdatei]]) wird gleichzeitig aufgrund der Wichtigkeit („Log-Level“) der Meldung entschieden, ob diese überhaupt weitergeleitet wird. Der Programmierer muss sich beim Erstellen des Programms nur um die Wichtigkeit der Meldungen Gedanken machen. Für eine Meldung können mehrere Appender mit unterschiedlicher Wichtigkeit angeschlossen werden, so dass ein Appender hier die Rolle eines [[Kanal (Informationstheorie)|Kanals]] spielt. Die Filterung und Art der Ausgabe kann zur Laufzeit konfiguriert werden.&lt;br /&gt;
&lt;br /&gt;
Log4j ist auf möglichst hohe Geschwindigkeit ausgelegt, damit das Protokollieren die Systemleistung nicht negativ beeinflusst. So dauert die Entscheidung, ob eine Meldung ausgegeben werden muss, auch auf einem veralteten System (AMD Duron mit 800&amp;amp;nbsp;MHz, JDK 1.3.1) nur 5&amp;amp;nbsp;Nanosekunden, die Ausgabe selbst –&amp;amp;nbsp;je nachdem, welches Layout verwendet wird&amp;amp;nbsp;– zwischen 21 und 37&amp;amp;nbsp;Mikrosekunden.&amp;lt;ref name=&amp;quot;log4j&amp;quot;&amp;gt;{{Internetquelle |url=https://logging.apache.org/log4j/1.2/index.html |titel=Apache log4j 1.2 - |sprache=en |abruf=2020-03-16}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ausgabe-Umfang ===&lt;br /&gt;
In der Konfigurationsdatei kann die Ausgabe je nach &amp;#039;&amp;#039;Wichtigkeit&amp;#039;&amp;#039; der Nachrichten gefiltert werden. Der Ausgabe-Umfang sinkt mit der zugewiesenen Wichtigkeitsstufe und umfasst alle Nachrichten der Stufe selbst sowie aller noch dringenderen Stufen. Die Reihenfolge stellt sich dabei wie folgt dar: &amp;lt;code&amp;gt;ALL&amp;lt;/code&amp;gt; → &amp;lt;code&amp;gt;TRACE&amp;lt;/code&amp;gt; → &amp;lt;code&amp;gt;DEBUG&amp;lt;/code&amp;gt; → &amp;lt;code&amp;gt;INFO&amp;lt;/code&amp;gt; → &amp;lt;code&amp;gt;WARN&amp;lt;/code&amp;gt; → &amp;lt;code&amp;gt;ERROR&amp;lt;/code&amp;gt; → &amp;lt;code&amp;gt;FATAL&amp;lt;/code&amp;gt; → &amp;lt;code&amp;gt;OFF&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Für die Einstufung der Wichtigkeit gelten folgende Richtwerte:&lt;br /&gt;
; &amp;lt;code&amp;gt;ALL&amp;lt;/code&amp;gt;: Alle Meldungen werden ungefiltert ausgegeben&lt;br /&gt;
; &amp;lt;code&amp;gt;TRACE&amp;lt;/code&amp;gt;: ausführlicheres Debugging (ab Version 1.2.12&amp;lt;ref&amp;gt;{{Internetquelle |url=https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/Level.html#TRACE |titel=Level (Apache Log4j 1.2.17 API) |hrsg=Logging.apache.org |datum=2012-06-09 |abruf=2014-07-24}}&amp;lt;/ref&amp;gt;), Kommentare&lt;br /&gt;
; &amp;lt;code&amp;gt;DEBUG&amp;lt;/code&amp;gt;: allgemeines Debugging (Auffinden von Fehlern)&lt;br /&gt;
; &amp;lt;code&amp;gt;INFO&amp;lt;/code&amp;gt;: allgemeine Informationen (Programm gestartet, Programm beendet, Verbindung zu Host &amp;lt;code&amp;gt;Foo&amp;lt;/code&amp;gt; aufgebaut, Verarbeitung dauerte soundsoviel Sekunden&amp;amp;nbsp;…)&lt;br /&gt;
; &amp;lt;code&amp;gt;WARN&amp;lt;/code&amp;gt;: Auftreten einer unerwarteten Situation&lt;br /&gt;
; &amp;lt;code&amp;gt;ERROR&amp;lt;/code&amp;gt;: Fehler (Ausnahme wurde abgefangen. Bearbeitung wurde alternativ fortgesetzt)&lt;br /&gt;
; &amp;lt;code&amp;gt;FATAL&amp;lt;/code&amp;gt;: Kritischer Fehler, [[Programmabbruch]]&lt;br /&gt;
; &amp;lt;code&amp;gt;OFF&amp;lt;/code&amp;gt;: Logging ist deaktiviert&lt;br /&gt;
&lt;br /&gt;
=== Appender ===&lt;br /&gt;
Mittels Appender kann das Ausgabeziel/können die Ausgabeziele der erzeugten Protokollausgaben festgelegt werden.&lt;br /&gt;
&lt;br /&gt;
Nachfolgend die wichtigsten Appender-Arten:&lt;br /&gt;
; &amp;lt;code&amp;gt;ConsoleAppender&amp;lt;/code&amp;gt;: Gibt auf Standardausgabe aus&lt;br /&gt;
; &amp;lt;code&amp;gt;FileAppender&amp;lt;/code&amp;gt;: Schreibt in eine Datei&lt;br /&gt;
; &amp;lt;code&amp;gt;RollingFileAppender&amp;lt;/code&amp;gt;: Beginnt eine neue Datei ab einer gewissen Größe&lt;br /&gt;
; &amp;lt;code&amp;gt;DailyRollingFileAppender&amp;lt;/code&amp;gt;: Beginnt zu gewissen Zeiten mit einer neuen Datei&lt;br /&gt;
; &amp;lt;code&amp;gt;SyslogAppender&amp;lt;/code&amp;gt;: Protokolliert mittels [[Syslog]]-Dienst&lt;br /&gt;
; &amp;lt;code&amp;gt;JDBCAppender&amp;lt;/code&amp;gt;: Schreibt in eine [[Datenbank]]&lt;br /&gt;
; &amp;lt;code&amp;gt;NTEventLogAppender&amp;lt;/code&amp;gt;: Schreibt ins [[Ereignisprotokoll]] des Windows-Systems&lt;br /&gt;
; &amp;lt;code&amp;gt;SMTPAppender&amp;lt;/code&amp;gt;: Schickt bei gewissen Meldungen eine Mail.&lt;br /&gt;
; &amp;lt;code&amp;gt;SocketAppender&amp;lt;/code&amp;gt;: Sendet die Protokollnachricht an einen konfigurierten Socket-Listener.&lt;br /&gt;
; &amp;lt;code&amp;gt;LogCatAppender&amp;lt;/code&amp;gt;: Protokolliert in den Android &amp;lt;code&amp;gt;LogCat&amp;lt;/code&amp;gt;&lt;br /&gt;
Weitere Appender können jederzeit hinzugefügt werden.&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration ===&lt;br /&gt;
Es gibt drei Arten, Log4j zu konfigurieren: mittels einer [[Java-Properties-Datei|Properties-]] oder einer [[Extensible Markup Language|XML]]-Datei oder im Programmcode. Es wird empfohlen, eine [[Java-Properties-Datei|Properties-]] oder [[Extensible Markup Language|XML]]-Datei zu verwenden, damit ist die Konfiguration vom Code getrennt, was es ermöglicht, ohne Modifikation oder Neustart der Applikation die Konfiguration des Loggings anzupassen. Somit kann beispielsweise eine Applikation so lange nur mit der Wichtigkeitsstufe &amp;#039;&amp;#039;FATAL&amp;#039;&amp;#039; betrieben werden, bis ein Fehler auftritt. Ab dann wird die Stufe &amp;#039;&amp;#039;WARN&amp;#039;&amp;#039; gesetzt, ohne die Applikation anzuhalten.&lt;br /&gt;
&lt;br /&gt;
Die Konfigurationsdateien definieren mittels der folgenden Komponenten das Verhalten von Log4j:&lt;br /&gt;
; Appender&lt;br /&gt;
: Diese bestimmen mittels Konfiguration der entsprechenden Appender-Klasse, wohin die Protokollausgaben geschrieben werden sollen, und mittels Konfiguration des Layouts, wie dorthin geschrieben werden soll. Neben der reinen Nachricht können mittels Muster zusätzlich Wichtigkeit, Datum, Name des Loggers, Klassenname und Methodenname bis hin zur genauen Codezeile ausgegeben werden.&lt;br /&gt;
; Logger&lt;br /&gt;
: Ein Logger ist ein Objekt, welches die Protokollierungsaufgaben einer Klasse übernimmt. Es wird über seinen Namen identifiziert. Üblicherweise wird der Klassenname als Name für den Logger verwendet. Es ist allerdings auch möglich, einen Fantasie-Namen zu verwenden, der von mehreren Klassen benutzt wird. Ein typisches Beispiel könnte so aussehen:&amp;lt;!-- --&amp;gt; &amp;lt;code&amp;gt;Logger log = Logger.getLogger(org.wikipedia.MyClass)&amp;lt;/code&amp;gt;.&amp;lt;br /&amp;gt;&amp;lt;!-- --&amp;gt; Damit kann das Protokollierungsverhalten einer Klasse gesteuert werden. Da der Logger auch die Paket-Informationen erhält, ist es auch möglich Logging für ganze (Super)-Pakete zu konfigurieren.&amp;lt;br /&amp;gt;&amp;lt;!-- --&amp;gt; Die Konfigurationsdatei kann dann eben den Logger-Namen – also z.&amp;amp;nbsp;B. „org.wikipedia.MyClass“ – und auch die gewünschte Wichtigkeitsstufe (Log-Level) enthalten. Es ist wie bereits erwähnt möglich, eine Konfiguration für ein Paket wie „org.wikipedia“ festzulegen.&amp;lt;br /&amp;gt;&amp;lt;!-- --&amp;gt; Darüber hinaus können entweder allgemein oder auch zu jedem Logger spezifisch ein oder mehrere Appender definiert werden. Somit ist es beispielsweise möglich, fatale Fehler nicht nur in eine Datei zu schreiben, sondern auch gleichzeitig per E-Mail an einen Administrator zu schicken.&amp;lt;br /&amp;gt;&amp;lt;!-- --&amp;gt; Log4j 2.0 bietet neben diesen klassischen Konfigurationen auch modernere Möglichkeiten an, in das Protokollierungsverhalten einzugreifen. Beispielsweise werden sogenannte Marker unterstützt.&lt;br /&gt;
&lt;br /&gt;
Ein weiteres nützliches Merkmal ist der Mapped Diagnostic Context. Dabei wird einer Kontextvariablen ein Wert zugewiesen und in der Konfigurationsdatei kann darauf referenziert werden. Dabei hat jeder Thread seinen eigenen Kontext und kann zusätzliche Informationen wie z.&amp;amp;nbsp;B. die Adresse des Clients bei einer Serveranwendung protokollieren.&lt;br /&gt;
&lt;br /&gt;
==== Beispiel ====&lt;br /&gt;
Die folgende XML-Konfiguration konfiguriert eine Applikation so, dass FATAL-Fehler von Fremdbibliotheken auf die Konsole protokolliert werden, ERROR-Fehler der eigenen Applikation zusätzlich auch per E-Mail geschickt werden, bei einer spezifischen Komponente darüber hinaus auch noch INFO-Meldungen protokolliert werden und bei einer bestimmten Klasse sogar noch DEBUG-Meldungen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE log4j:configuration PUBLIC &amp;quot;-//APACHE//DTD LOG4J 1.2//EN&amp;quot;&lt;br /&gt;
    &amp;quot;http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;log4j:configuration&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Appender für eine einzeilige Ausgabe an der Konsole --&amp;gt;&lt;br /&gt;
  &amp;lt;appender name=&amp;quot;Konsole&amp;quot; class=&amp;quot;org.apache.log4j.ConsoleAppender&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;layout class=&amp;quot;org.apache.log4j.PatternLayout&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;param name=&amp;quot;ConversionPattern&amp;quot;&lt;br /&gt;
        value=&amp;quot;%d{ABSOLUTE} %5p %c{1}:%L - %m%n&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/layout&amp;gt;&lt;br /&gt;
  &amp;lt;/appender&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- Appender für dieselbe Ausgabe via E-Mail --&amp;gt;&lt;br /&gt;
  &amp;lt;appender name=&amp;quot;mail&amp;quot; class=&amp;quot;org.apache.log4j.net.SMTPAppender&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;param name=&amp;quot;SMTPHost&amp;quot; value=&amp;quot;smtp.myservername.xx&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;param name=&amp;quot;From&amp;quot; value=&amp;quot;email@fromemail.xx&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;param name=&amp;quot;To&amp;quot; value=&amp;quot;toemail@toemail.xx&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;param name=&amp;quot;Subject&amp;quot; value=&amp;quot;[LOG] ...&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;param name=&amp;quot;BufferSize&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;param name=&amp;quot;threshold&amp;quot; value=&amp;quot;error&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;layout class=&amp;quot;org.apache.log4j.PatternLayout&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;param name=&amp;quot;ConversionPattern&amp;quot;&lt;br /&gt;
        value=&amp;quot;%d{ABSOLUTE} %5p %c{1}:%L - %m%n&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/layout&amp;gt;&lt;br /&gt;
  &amp;lt;/appender&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- ERROR-Logger für alle Klassen meiner Applikation --&amp;gt;&lt;br /&gt;
  &amp;lt;logger name=&amp;quot;com.myapp&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;level value=&amp;quot;error&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;appender-ref ref=&amp;quot;Konsole&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;appender-ref ref=&amp;quot;mail&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/logger&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- INFO-Logger für eine spezifische Komponente --&amp;gt;&lt;br /&gt;
  &amp;lt;logger name=&amp;quot;com.myapp.mycomponent&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;level value=&amp;quot;info&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/logger&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- DEBUG-Logger für eine spezifische Klasse --&amp;gt;&lt;br /&gt;
  &amp;lt;logger name=&amp;quot;com.myapp.mycomponent.MyClass&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;level value=&amp;quot;debug&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/logger&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- FATAL-Logger für die gesamte Applikation (inkl. Bibliotheken) --&amp;gt;&lt;br /&gt;
  &amp;lt;root&amp;gt;&lt;br /&gt;
    &amp;lt;level value=&amp;quot;fatal&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- protokolliert auf Konsole - wenn nicht in Sub-Loggern anders definiert --&amp;gt;&lt;br /&gt;
    &amp;lt;appender-ref ref=&amp;quot;Konsole&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/root&amp;gt;&lt;br /&gt;
&amp;lt;/log4j:configuration&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Apache Log4j 2 ==&lt;br /&gt;
Version 2 wurde von Grund auf neu geschrieben, auch wenn Teile von Log4j 1.x übernommen wurden. Die neue Version verfügt über eine moderne Schnittstelle, wie sie auch von [[logback]] bekannt ist. Außerdem unterstützt sie [[Simple Logging Facade for Java|slf4j]] native. Zugleich wurden Schwächen von logback analysiert und versucht zu verbessern. Somit verliert Log4j 2 beispielsweise keine Logging-Events, wenn sich das System neu konfiguriert. Außerdem wurde eine Plugin-Architektur bereitgestellt und die Konfiguration mittels [[JavaScript Object Notation|JSON]] ermöglicht.&amp;lt;ref name=&amp;quot;log4j2&amp;quot;&amp;gt;{{Internetquelle |url=https://grobmeier.solutions/the-new-log4j-2-0-05122012.html |titel=The new log4j 2.0 |abruf=2020-03-16}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Projekt gab im August 2015 bekannt, dass der 1.x&amp;#039;&amp;#039;&amp;#039;‐&amp;#039;&amp;#039;&amp;#039;Zweig das „End of Life“ erreicht hat und damit die Weiterentwicklung eingestellt wird. Entwickler werden deswegen gebeten, auf den 2.x&amp;#039;&amp;#039;&amp;#039;‐&amp;#039;&amp;#039;&amp;#039;Zweig zu migrieren.&amp;lt;ref&amp;gt;{{Internetquelle |url=https://logging.apache.org/log4j/2.x/manual/migration.html |titel=Log4j – Migrating from Log4j 1.x to 2.x |abruf=2022-01-12}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{Internetquelle |url=https://logging.apache.org/log4j/1.2/ |titel=Apache log4j 1.2 - |abruf=2022-01-12}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auf der Website von Apache werden einige Unterschiede zwischen Log4j 1 und Log4j 2 aufgelistet.&amp;lt;ref&amp;gt;{{Internetquelle |url=https://logging.apache.org/log4j/2.x/manual/migration.html |titel=Log4j – Migrating from Log4j 1.x |abruf=2020-03-16}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Log4j 2 Konfigurationsbeispiel ===&lt;br /&gt;
In Log4j 2 hat sich die Syntax der Konfiguration geändert. Es folgt eine beispielhafte Konfigurationsdatei nach dem neuen Standard:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;Configuration &amp;gt;&lt;br /&gt;
	&amp;lt;Properties&amp;gt;&lt;br /&gt;
	    &amp;lt;Property name=&amp;quot;logfile&amp;quot;&amp;gt;C:/logs/logfile&amp;lt;/Property&amp;gt;&lt;br /&gt;
		&amp;lt;Property name=&amp;quot;LOG_PATTERN&amp;quot;&amp;gt;%d{dd.MM.yyyy - HH:mm:ss} %-5p [%t] - %C - %M - %m%n&amp;lt;/Property&amp;gt;&lt;br /&gt;
	&amp;lt;/Properties&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;Appenders&amp;gt;&lt;br /&gt;
		&amp;lt;!-- Appender für eine einzeilige Ausgabe an der Konsole --&amp;gt;&lt;br /&gt;
		&amp;lt;Console name=&amp;quot;Konsole&amp;quot; target=&amp;quot;SYSTEM_OUT&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;ThresholdFilter level=&amp;quot;DEBUG&amp;quot; onMatch=&amp;quot;ACCEPT&amp;quot;	onMismatch=&amp;quot;DENY&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;PatternLayout pattern=&amp;quot;${LOG_PATTERN}&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;/Console&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;!-- Appender für alle Protokolle ab Stufe Debug in maximal 20 Dateien, die jeweils maximal 20 MB groß werden dürfen --&amp;gt;&lt;br /&gt;
		&amp;lt;RollingFile name=&amp;quot;DEBUG_LOG&amp;quot;&lt;br /&gt;
			fileName=&amp;quot;${logfile}_Debug.log&amp;quot;&lt;br /&gt;
			filePattern=&amp;quot;${logfile}_Debug-%i.log&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;ThresholdFilter level=&amp;quot;DEBUG&amp;quot; onMatch=&amp;quot;ACCEPT&amp;quot; onMismatch=&amp;quot;DENY&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;PatternLayout pattern=&amp;quot;${LOG_PATTERN}&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;Policies&amp;gt;&lt;br /&gt;
				&amp;lt;TimeBasedTriggeringPolicy /&amp;gt;&lt;br /&gt;
				&amp;lt;SizeBasedTriggeringPolicy size=&amp;quot;20000KB&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;/Policies&amp;gt;&lt;br /&gt;
			&amp;lt;DefaultRolloverStrategy max=&amp;quot;20&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;/RollingFile&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;!-- Appender für alle Protokolle ab Stufe Error in maximal 20 Dateien, die jeweils maximal 20 MB groß werden dürfen --&amp;gt;&lt;br /&gt;
		&amp;lt;RollingFile name=&amp;quot;ERROR_LOG&amp;quot;&lt;br /&gt;
			fileName=&amp;quot;${logfile}/${project}_Error.log&amp;quot;&lt;br /&gt;
			filePattern=&amp;quot;${logfile}/${project}_Error-%i.log&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;ThresholdFilter level=&amp;quot;ERROR&amp;quot; onMatch=&amp;quot;ACCEPT&amp;quot; onMismatch=&amp;quot;DENY&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;PatternLayout pattern=&amp;quot;${LOG_PATTERN}&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;Policies&amp;gt;&lt;br /&gt;
				&amp;lt;TimeBasedTriggeringPolicy /&amp;gt;&lt;br /&gt;
				&amp;lt;SizeBasedTriggeringPolicy size=&amp;quot;20000KB&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;/Policies&amp;gt;&lt;br /&gt;
			&amp;lt;DefaultRolloverStrategy max=&amp;quot;20&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;/RollingFile&amp;gt;&lt;br /&gt;
	&amp;lt;/Appenders&amp;gt;&lt;br /&gt;
    &amp;lt;Loggers&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;logger name=&amp;quot;com.myapp&amp;quot; additivity=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;AppenderRef ref=&amp;quot;DEBUG_LOG&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;AppenderRef ref=&amp;quot;ERROR_LOG&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;AppenderRef ref=&amp;quot;Konsole&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;/logger&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Root level=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;AppenderRef ref=&amp;quot;Konsole&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;/Root&amp;gt;&lt;br /&gt;
	&amp;lt;/Loggers&amp;gt;&lt;br /&gt;
&amp;lt;/Configuration&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bekanntwerden einer Sicherheitslücke im Dezember 2021 ==&lt;br /&gt;
Am 10. Dezember 2021 wurde eine [[Exploit#Zero-Day-Exploit|Zero-Day-Lücke]] in Log4j-Version 2 bekannt ([[Common Vulnerabilities and Exposures|CVE]]-2021-44228,&amp;lt;ref&amp;gt;[https://www.cvedetails.com/cve/CVE-2021-44228/ Vulnerability Details : CVE-2021-44228], auf cvedetails.com&amp;lt;/ref&amp;gt; oft als &amp;#039;&amp;#039;&amp;#039;Log4Shell&amp;#039;&amp;#039;&amp;#039; bezeichnet), die Angreifer ausnutzen konnten, um Code auf dem jeweiligen Hostsystem auszuführen ([[Remote Code Execution]]) und somit zum Beispiel Rechenleistung von den infizierten Servern zu benutzen, um [[Krypto-Mining]] zu betreiben.&amp;lt;ref&amp;gt;{{Internetquelle |autor=Robin Wille |url=https://www.businessinsider.de/wirtschaft/warnstufe-rot-vor-dieser-sicherheitsluecke-in-server-software-warnt-das-bundesamt-fuer-sicherheit-in-der-it/ |titel=Warnstufe Rot: Vor dieser Sicherheitslücke in Server-Software warnt das Bundesamt für Sicherheit in der IT |datum=2021-12-12 |sprache=de-DE |abruf=2022-11-27}}&amp;lt;/ref&amp;gt; Die Schwachstelle wurde vom [[Alibaba Cloud|Alibaba-Cloud-Sicherheitsdienst]] an Apache gemeldet. Aufgrund der weiten Verbreitung von Log4j und der einfach auszunutzenden Schwachstelle bezeichneten Fachleute die Meldung als „Größte Schwachstelle in der Geschichte des modernen Computing“.&amp;lt;ref&amp;gt;{{Literatur |Autor=Stephan Finsterbusch, Thiemo Heeg |Titel=Softwarelücke Log4j: „Größte Schwachstelle in der Geschichte des modernen Computing“ |Sammelwerk=FAZ.NET |ISSN=0174-4909 |Online=https://www.faz.net/aktuell/wirtschaft/unternehmen/log4j-softwareluecke-ist-laut-bsi-aeusserst-ernst-zu-nehmen-17682526.html |Abruf=2022-11-27}}&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;{{Internetquelle |autor=Peter Sieben |url=https://www.ingenieur.de/technik/fachbereiche/ittk/log4j-sicherheitsluecke-warum-der-fehler-unvermeidbar-war/ |titel=Log4J-Sicherheitslücke: Warum der Fehler unvermeidbar war – ingenieur.de |datum=2021-12-23 |sprache=de-DE |abruf=2022-11-27}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zahlreiche Softwareentwickler, Dienstanbieter, Unternehmen und Behörden waren potentiell betroffen, unter anderem [[Amazon Web Services]], [[Steam]] und [[iCloud]].&amp;lt;ref&amp;gt;{{Internetquelle |autor=heise online |url=https://www.heise.de/news/Kritische-Zero-Day-Luecke-in-log4j-gefaehrdet-zahlreiche-Server-und-Apps-6291653.html |titel=Kritische Zero-Day-Lücke in Log4j gefährdet zahlreiche Server und Apps |sprache=de |abruf=2021-12-10}}&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;{{Literatur |Autor=Max Hoppenstedt |Titel=Log4-J-Schwachstelle: »Leider machen auch Hacker Überstunden« |Sammelwerk=Der Spiegel |Datum=2021-12-12 |Online=https://www.spiegel.de/netzwelt/web/log4-j-schwachstelle-ja-leute-die-scheisse-brennt-lichterloh-a-760bd03d-42d2-409c-a8d2-d5b13a9150fd |Abruf=2021-12-12}}&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt; Laut [[Bundesamt für Sicherheit in der Informationstechnik]] (BSI) ergaben Berichte von [[Computer Emergency Response Team|CERT]]-Quellen, dass weltweite Massenscans und versuchte Kompromittierungen, sowie laut [[F-Secure]] auch [[Ransomware]]-Angriffe im Zuge der Zero-Day-Lücke stattfanden.&amp;lt;ref&amp;gt;{{Internetquelle |url=https://www.bsi.bund.de/SharedDocs/Cybersicherheitswarnungen/DE/2021/2021-549032-10F2.pdf?__blob=publicationFile&amp;amp;v=3 |titel=Kritische Schwachstelle in log4j veröffentlicht (CVE-2021-44228) |werk=www.bsi.bund.de |format=PDF |abruf=2021-12-14}}&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; Das BSI verwies auf eine „unvollständige Auflistung“ von 140 Unternehmen, die besonders anfällig seien, schätze die direkte Bedrohung für Endanwender jedoch als eher gering ein.&amp;lt;ref&amp;gt;{{Internetquelle |autor= |url=https://gist.github.com/SwitHak/b66db3a06c2955a9cb71a8718970c592 |titel=BlueTeam CheatSheet * Log4Shell* {{!}} Last updated: 2021-12-14 0006 UTC |sprache=en |abruf=2021-12-14}}&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bekannte Fälle, in denen die Sicherheitslücke kriminell ausgenutzt wurde, sind (Auswahl):&amp;lt;ref&amp;gt;{{Internetquelle |autor=Christof Kerkmann |url=https://www.handelsblatt.com/technik/it-internet/java-bibliothek-log4j-gefaehrliche-sicherheitsluecke-die-angriffe-auf-unternehmen-und-behoerden-beginnen-/27900826.html |titel=Gefährliche Sicherheitslücke: Die Angriffe auf Unternehmen und Behörden beginnen |werk=handelsblatt.com |datum=2021-12-17 |abruf=2021-12-18}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Am 9. Dezember wurde der erste Angriff auf einen Server des Spiels [[Minecraft]] dokumentiert.&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;&lt;br /&gt;
* Am 16. Dezember 2021 wurden mit dem Internet verbundene Systeme des belgischen Militärs über die Lücke angegriffen.&amp;lt;ref&amp;gt;{{Internetquelle |url=https://www.spiegel.de/netzwelt/web/log4j-schwachstelle-belgisches-militaer-von-angriff-ueber-sicherheitsluecke-betroffen-a-aaf2d48c-84e8-4839-8f0b-77a1c4031fdd |titel=Log4j-Schwachstelle: Belgisches Militär von Angriff über Sicherheitslücke betroffen – Der Spiegel |werk=spiegel.de |datum=2021-12-21 |abruf=2021-12-23}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Am 17. Dezember 2021 wurde die Website des [[Bundesfinanzhof]]s wegen einer solchen Attacke abgeschaltet.&amp;lt;ref&amp;gt;{{Internetquelle |url=https://www.faz.net/aktuell/wirtschaft/digitec/log4j-nach-hackerangriff-schaltet-bundesfinanzhof-website-ab-17689399.html |titel=Schwachstelle Log4j: Bundesfinanzhof schaltet Website nach Hackerangriff ab |werk=faz.net |datum=2021-12-17 |abruf=2021-12-17}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
Die Schließung der Sicherheitslücke war nach kurzer Zeit über eine [[Softwareaktualisierung]] möglich, die Umsetzung durch die jeweils betroffenen Softwarehersteller zog sich jedoch aufgrund der Komplexität der Nutzung von Log4j über mehrere Wochen und teilweise sogar Monate hin.&amp;lt;ref&amp;gt;{{Internetquelle |autor=Alexander Klay |url=https://www.morgenpost.de/vermischtes/article234077919/log4j-bsi-zero-day-sicherheitsluecke.html |titel=Log4j: Was über die Sicherheitslücke bekannt ist und wie man sich schützt |datum=2021-12-13 |sprache=de-DE |abruf=2022-11-27}}&amp;lt;/ref&amp;gt; Im März 2023, 15 Monate nach Entdeckung und Schließung der Sicherheitslücke, waren immer noch mehr als ein Drittel der täglich heruntergeladenen Versionen von Log4j von der Sicherheitslücke betroffen. Dies wird auf automatische [[Softwareverteilung]] und -downloads durch Abhängigkeiten zurückgeführt.&amp;lt;ref&amp;gt;{{Internetquelle |autor=heise online |url=https://www.heise.de/meinung/Log4Shell-Open-Source-als-Gefahr-fuer-die-Software-Lieferkette-7606506.html |titel=Log4Shell: Open Source als Gefahr für die Software-Lieferkette |sprache=de |abruf=2023-03-22}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Alternativen ==&lt;br /&gt;
* Java Logging – seit Java 1.4 Bestandteil der Java-Klassenbibliothek; ähnlich wie Log4j, weniger Appender, kein PatternLayout&lt;br /&gt;
* [[Apache Commons]] Logging – Schnittstelle für beliebig austauschbare Logging-Frameworks, unter anderem Log4j&lt;br /&gt;
* tinylog – schlankes Logging-Framework mit einem statischen Logger&amp;lt;ref&amp;gt;{{Internetquelle |url=https://tinylog.org/v2/ |titel=tinylog 2 – Lightweight Logging Framework for Java, Scala, Kotlin, and Android |abruf=2021-12-31}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* slf4j mit logback – weit verbreitete moderne Alternative&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
* Samudra Gupta: &amp;#039;&amp;#039;Pro Apache Log4j.&amp;#039;&amp;#039; Apress, 22. Juni 2005, ISBN 978-1-59059-499-5, http://www.apress.com/book/view/9781590594995&lt;br /&gt;
* Ceki Gülcü: &amp;#039;&amp;#039;The Complete Log4j Manual.&amp;#039;&amp;#039; QOS.ch, 7. Mai 2003, ISBN 978-2-9700369-0-6, [https://books.google.de/books?id=hZBimlxiyAcC Leseprobe auf Google Books]&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [https://logging.apache.org/log4j/ log4j-Webseiten] (englisch)&lt;br /&gt;
** [https://logging.apache.org/log4j/1.2/manual.html Manual] und [https://logging.apache.org/log4j/1.2/publications.html Artikel] (englisch)&lt;br /&gt;
* [http://wiki.apache.org/logging-log4j/Log4JProjectPages log4j-Wiki] (englisch, nur für registrierte Benutzer)&lt;br /&gt;
* [https://www.laliluna.de/articles/posts/log4j-tutorial.html Log4j Einführung mit Tomcat-Beispielen] von Sebastian Hennebrueder&lt;br /&gt;
* [https://cve.mitre.org/cgi-bin/cvename.cgi?name=2021-44228 CVE-2021-44228]&lt;br /&gt;
* {{Internetquelle&lt;br /&gt;
   |url=https://www.heise.de/meinung/Kommentar-zu-log4j-Es-funktioniert-wie-spezifiziert-6294476.html&lt;br /&gt;
   |titel=Kommentar zu Log4j: Es funktioniert wie spezifiziert&lt;br /&gt;
   |werk=[[heise.de]]&lt;br /&gt;
   |datum=2021-12-14&lt;br /&gt;
   |abruf=2021-12-16}}&lt;br /&gt;
* {{Internetquelle&lt;br /&gt;
   |autor=Ruth Fulterer&lt;br /&gt;
   |url=https://www.nzz.ch/technologie/log4j-wurde-1997-in-der-schweiz-entwickelt-der-erfinder-erzaehlt-ld.1660571&lt;br /&gt;
   |titel=Log4j wurde 1997 in der Schweiz entwickelt – der Erfinder erzählt&lt;br /&gt;
   |werk=[[Neue Zürcher Zeitung]]&lt;br /&gt;
   |datum=2021-12-16&lt;br /&gt;
   |abruf=2021-12-16&lt;br /&gt;
   |kommentar=Bericht über ein Gespräch mit dem Entwickler Ceki Gülcü nach der Entdeckung der Sicherheitslücke}}&lt;br /&gt;
* {{Internetquelle |url=https://www.faz.net/aktuell/wirtschaft/unternehmen/log4j-entwickler-man-muss-aufpassen-nicht-durchzudrehen-17685794.html |titel=Man muss aufpassen, nicht durchzudrehen |werk=[[Frankfurter Allgemeine Zeitung]] |datum=2021-12-16 |abruf=2021-12-16 |kommentar=Interview mit dem Entwickler Christian Grobmeier nach der Entdeckung der Sicherheitslücke, hinter Bezahlschranke}}&lt;br /&gt;
* {{Internetquelle |url=https://www.br.de/mediathek/podcast/wild-wild-web/das-wichtigste-hobby-der-welt/2108090 |titel=Das wichtigste Hobby der Welt |werk=[[Bayerischer Rundfunk]] |datum=2025-07-03 |abruf=2025-07-06 |kommentar=Interview mit dem Entwickler Christian Grobmeier, der mit Selbstzweifeln kämpft und ein neues Hobby findet, das sein Leben ändert. Ein Deep Dive in die Welt der Open Source Maintainer, einer Gruppe freiwilliger Programmierer, die das Internet für uns alle am Laufen hält und dabei immer mehr unter Druck gerät.}}&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Java-Bibliothek]]&lt;br /&gt;
[[Kategorie:Freie Systemsoftware]]&lt;br /&gt;
[[Kategorie:Apache-Projekt]]&lt;br /&gt;
[[Kategorie:Software-Sicherheitslücke]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Zeikonaut</name></author>
	</entry>
</feed>