swirl logo

About     Archive     Feed     Impressum

Java: log4j auf einem Blick

Allgemein

log4j ist ein Logging-Framework in Java. Es gilt aktuell als der De-facto Standard hinsichtlich Logging-Frameworks und findet abseits zu Java auch in einigen anderen Programmiersprachen seine Ableger.

Grundsätzlich besteht die Absicht hinter log4j eine Konfigurationsmöglichkeit zu schaffen, nach der die Log-Verarbeitung zugeschnitten auf die individuellen Bedürfnisse realisiert werden kann.

Entgegen mancher Meinung ist dabei die Log-Verarbeitung sehr effizient; eine typische Log-Ausgabe beansprucht auf modernen Systemen nur wenige Nanosekunden (< 5 ns)

Log-Level

Folgend eine Auflistung aller unterstützenden Log-Level mit deren Bedeutung:

Appender

Mittels einem Appender kann festgelegt werden, in welcher Form Log-Informationen verarbeitet werden.

Folgend eine Auflistung der wichtigsten Appender:

Beispielkonfiguration

Folgend eine einfach Beispielkonfiguration (log4j.properties), die jegliche Log-Files sowohl auf stdout loggt, bzw. ebenso in ein täglich rollierendes Log-File, welches sich im Tomcat-Log-Verzeichnis befindet.

Gerade im Umgang mit Dateien gilt es aufmerksam darauf zu achten, vollständige Dateipfade anzugeben. Unter Umständen gibt es, wenn log4j mit dem Dateipfad nichts anfangen kann, weder ein Log-File, noch einen Fehlerhinweis.

# Root logger option
log4j.rootLogger=INFO, stdout, DailyRollingFileAppender
log4j.logger.de.example.application=INFO 

# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

# Direct log messages to file
log4j.appender.DailyRollingFileAppender = org.apache.log4j.DailyRollingFileAppender
log4j.appender.DailyRollingFileAppender.File = ${catalina.base}/logs/my-app.log
log4j.appender.DailyRollingFileAppender.Append = true
log4j.appender.DailyRollingFileAppender.DatePattern = '.'yyyy-MM-dd
log4j.appender.DailyRollingFileAppender.layout = org.apache.log4j.PatternLayout
log4j.appender.DailyRollingFileAppender.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} %c{1} [%p] %m%n
Hire me!