Farbcodiertes Logging für Tomcat

Aufbauend auf Krassis Artikel zum farbcodierten Logging für JBoss und JBoss ESB habe ich das bunte Loggen auch mal für den Tomcat umgesetzt.
Benutzt wurde Tomcat 6.0.20, es sollte aber auch mit jeder anderen Version so oder so ähnlich funktionieren.

Die Einrichtung gliedert sich in zwei Schritte:
I. Tomcats internen Loggingmechanismus auf log4j umstellen
II. Log4j für Tomcat mit dem farbgebenden Logger konfigurieren

I. Tomcat auf log4j umstellen

1. Tomcat stoppen

2. log4j.jar z.B. hier herunterladen und ins {$TOMCAT_HOME}/lib Verzeichnis kopieren

3. Das interne Tomcat Logging für log4j „fit machen“.
Dazu müssen die Dateien

  • tomcat-juli.jar ins {$TOMCAT_HOME}/bin und
  • tomcat-juli-adapters.jar ins {$TOMCAT_HOME}/lib

Verzeichnis kopiert und ggf. ersetzt werden.
Herunterladen kann man beide z.B. unter
ftp://ftp.uni-erlangen.de/pub/mirrors/apache/tomcat/tomcat-6/v6.0.26/bin/extras//bin/extras/
oder von einem anderen Mirror, den man auf
http://tomcat.apache.org/download-60.cgi
aus der Liste auswählt.
Für ältere Versionen wird man unter http://archive.apache.org/dist/tomcat/tomcat-6/ fündig.

4. Die Datei {$TOMCAT_HOME}/conf/logging.properties löschen oder umbenennen.
Verwendet wird in Zukunft die {$TOMCAT_HOME}/lib/log4j.properties zur Konfiguration von log4j (siehe Schritt II).

5. Fertig mit I.

II. Log4j für Tomcat mit dem farbgebenden Logger konfigurieren

1. ppsa-log4j-color-0.0.1.jar aus dem PPSA Reppo herunterladen und ins {$TOMCAT_HOME}/lib Verzeichnis kopieren.

2. Folgendes in die {$TOMCAT_HOME}/lib/log4j.properties einfügen:

 log4j.rootLogger=DEBUG, TOMCAT, CONSOLE

 ### CONSOLE appender (catalina.out) -- standard
 # This will add colored log4j output of Tomcat to the standard catalina.out file,
 # mixed with the output th deployed web-applications produce
 log4j.appender.CONSOLE=de.rrze.ppsa.log.ANSIConsoleAppender
 #log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
 log4j.appender.CONSOLE.Target=System.out
 log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
 log4j.appender.CONSOLE.layout.ConversionPattern=[TOMCAT] %d{ABSOLUTE} [%t] %5p %c:%L - %m%n
 #log4j.appender.CONSOLE.layout.ConversionPattern=%d{ABSOLUTE} [%t] %5p %c:%L - %m%n
 #log4j.appender.CONSOLE.layout.ConversionPattern=%d{ABSOLUTE} [%t] %5p %c{1}:%L - %m%n

 ### TOMCAT appender (tomcat.log) -- optional
 # This will log log4j output of Tomcat to a seperate tomcat.log file, seperate
 # from the output the deployed web-applications produce which will still be logged
 # to catalina.out
 #log4j.appender.TOMCAT=org.apache.log4j.RollingFileAppender
 #log4j.appender.TOMCAT.File=${catalina.base}/logs/tomcat.log
 #log4j.appender.TOMCAT.MaxFileSize=100MB
 #log4j.appender.TOMCAT.MaxBackupIndex=10
 #log4j.appender.TOMCAT.layout=org.apache.log4j.PatternLayout
 #log4j.appender.TOMCAT.layout.ConversionPattern=[TOMCAT] %d{ABSOLUTE} [%t] %5p %c:%L - %m%n
 ##log4j.appender.TOMCAT.layout.ConversionPattern=%d{ABSOLUTE} [%t] %5p %c:%L - %m%n
 ##log4j.appender.TOMCAT.layout.ConversionPattern=%d{ABSOLUTE} [%t] %5p %c{1}:%L - %m%n

 ### TOMCAT
 log4j.logger.org.apache.catalina=INFO
 #log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost]=INFO
 log4j.logger.org.apache.coyote=INFO
 log4j.logger.org.apache.tomcat=INFO
 log4j.logger.org.apache.commons.digester=INFO
 log4j.logger.org.apache.jasper=INFO

3. Tomcat starten.

4. Logausgaben in {$TOMCAT_HOME}/logs/catalina.out beobachten.

Anmerkung: Anwendungen die eine eigene log4j Library und log4j.properties mitbringen können nicht zentral in obiger Datei konfiguriert werden und benutzen demnach auch nicht das farbige Logging.

Hope that helps anyone!
Have fun!

Quellen:
http://blog.ralscha.ch/?p=45
http://www.blogs.uni-erlangen.de/PP/stories/4653/
http://tomcat.apache.org/tomcat-6.0-doc/logging.html#log4j