Farbcodiertes Logging für JBoss und JBoss ESB
Sowohl während der Entwicklung als auch in einer Produktivumgebung können nach Prioritäten farbcodierte Logs sehr nützlich sein. Die folgenden Logging Konfiguration werden auf den von PP genutzten JBoss und JBoss ESB Systemen verwendet.
- Die Konfiguration des JBoss Loggings ist in der Datei $JBOSS_HOME/server/default/conf/jboss-log4j.xml definiert. Der Standard ConsoleAppender kann durch den ANSIConsoleAppender ersetzt werden. Die Declaration sieht folgendermaßen aus:
- Zuletzt muss ppsa-log4j-color-0.0.1.jar zum JBoss classpath hinzugefügt werden. Dies wird dadurch erreicht, dass man es in die $JBOSS_HOME/server/default/lib kopiert. Die Jar-Datei enthält sowohl den ANSIConsoleAppender als auch die ANSIColorLayout Klassen.
- Nicht vergessen, den Server danach neu zu starten.
<!--<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">--> <appender name="CONSOLE" class="de.rrze.ppsa.log.ANSIConsoleAppender"> <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/> <param name="Target" value="System.out"/> <param name="Threshold" value="INFO"/> <layout class="org.apache.log4j.PatternLayout"> <!-- The default pattern: Date Priority [Category] Message\n --> <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/> </layout> </appender>
Um ähnliche Farbcodierungen für den server.log zu erhalten, der ein anderes Farbschema benutzt, müssen die folgenden Änderungen vorgenommen werden:
<!-- A time/date based rolling appender --> <appender name="FILE" class="org.jboss.logging.appender.DailyRollingFileAppender"> <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/> <param name="File" value="${jboss.server.log.dir}/server.log"/> <param name="Append" value="false"/> <!-- Rollover at midnight each day --> <param name="DatePattern" value="'.'yyyy-MM-dd"/> <!-- Rollover at the top of each hour <param name="DatePattern" value="'.'yyyy-MM-dd-HH"/> --> <layout class="org.osuosl.logging.ANSIColorLayout"> <!-- The default pattern: Date Priority [Category] Message\n --> <param name="ConversionPattern" value="%d %-5p [%c{1}] %m%n"/> <!-- The full pattern: Date MS Priority [Category] (Thread:NDC) Message\n <param name="ConversionPattern" value="%d %-5r %-5p [%c] (%t:%x) %m%n"/> --> </layout> </appender>
Die vorgeschlagene Lösung basiert auf dem ANSIColorAppender, geschrieben von Dan Dyer und dem ANSIColorLayout von Peter Krenesky.
During development cycle or in a productive environment color-coded log messages based on their priority can prove pretty useful. The following logging configurations are deployed on the JBoss and JBoss ESB systems used by PP:
- The JBoss loggin configuration is defined in the $JBOSS_HOME/server/default/conf/jboss-log4j.xml file. The standard ConsoleAppender can be exchanged with the ANSIConsoleAppender. Declaration change looks like that:
- At last the ppsa-log4j-color-0.0.1.jar has to be added to the JBoss classpath. This can be achieved by copying it in the$JBOSS_HOME/server/default/lib. This jar file contains the ANSIConsoleAppender and the ANSIColorLayout classes.
- Do not forget to restart the server.
<!--<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">--> <appender name="CONSOLE" class="de.rrze.ppsa.log.ANSIConsoleAppender"> <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/> <param name="Target" value="System.out"/> <param name="Threshold" value="INFO"/> <layout class="org.apache.log4j.PatternLayout"> <!-- The default pattern: Date Priority [Category] Message\n --> <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/> </layout> </appender>
in order to get similar color-coding(this one uses different color scheme) for the server.log the following changes have to applied:
<!-- A time/date based rolling appender --> <appender name="FILE" class="org.jboss.logging.appender.DailyRollingFileAppender"> <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/> <param name="File" value="${jboss.server.log.dir}/server.log"/> <param name="Append" value="false"/> <!-- Rollover at midnight each day --> <param name="DatePattern" value="'.'yyyy-MM-dd"/> <!-- Rollover at the top of each hour <param name="DatePattern" value="'.'yyyy-MM-dd-HH"/> --> <layout class="org.osuosl.logging.ANSIColorLayout"> <!-- The default pattern: Date Priority [Category] Message\n --> <param name="ConversionPattern" value="%d %-5p [%c{1}] %m%n"/> <!-- The full pattern: Date MS Priority [Category] (Thread:NDC) Message\n <param name="ConversionPattern" value="%d %-5r %-5p [%c] (%t:%x) %m%n"/> --> </layout> </appender>
The proposed solution is based on the ANSIColorAppender written by Dan Dyer and the ANSIColorLayout provided by Peter Krenesky.