Das Logging via log4j im JBoss 5 AS wird in der Regel über eine Konfigurationsdatei gesteuert. Möchte man nun temporär das Log-Level ändern, um beispielsweise DEBUG-Meldungen zu sehen, dann besteht grundsätzlich die Möglichkeit, dies mittels Texteditor direkt in der Konfigurationsdatei anzupassen. Nach einer Wartezeit von maximal 60 Sekunden erfolgt (sofern man die Standardeinstellungen nicht verändert hat) eine automatische Rekonfiguration von log4j, falls sich die Konfigurationsdatei geändert hat.

Der Nachteil dieser Vorgehensweise ist, dass man (vor allem bei Produktivsystemen) eine dauerhafte Änderung an der Konfiguration vornimmt. Diesem Nachteil kann man begegnen, wenn man die Änderungen an der log4j Konfiguration über JMX (jmx-console > jboss.system > service=Logging,type=Log4jService) macht.

Über die im MBean angebotenen Methoden können nun die Log-Level beliebig geändert werden, ohne dass diese persistent weggeschrieben werden. Spätestens mit einem Neustart des Servers gehen die Änderungen verloren und log4j arbeitet wieder, wie in der Konfigurationsdatei definiert.

Wer nicht auf den Komfort einer Konfigurationsdatei verzichten möchte, kann beide Vorgehensweisen kombinieren und via JMX über den Parameter “ConfigurationURL” der MBean auf eine alternative Datei verweisen.

This article is based on the blog post ‘Dynamically Updating Log Levels in JBoss‘ by Chris Mahns. Thank you very much for sharing your knowledge :)