Nuove frontiere del logging
Log4j, il toolkit di logging utilizzato per default da JBoss, riserva un sacco di sorprese... Sapevate, ad esempio, che è possibile inviare i messaggi loggati via email o instant messenger (Yahoo Messenger, MSN, ICQ, etc...) , renderli disponibili tramite SNMP o attraverso SysLog?
Ad esempio, per inviare i log di livello ERROR attraverso email ad un indirizzo jboss@smartlab.net basta configurare un appender in questo modo:
<appender name="SMTP" class="org.apache.log4j.net.SMTPAppender">
<errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
<param name="Threshold" value="ERROR"/>
<param name="To" value="jboss@smartlab.net"/>
<param name="From" value="jboss@myhost.smartlab.net"/>
<param name="Subject" value="JBoss Server Errors"/>
<param name="SMTPHost" value="localhost"/>
<param name="BufferSize" value="10"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c] %m%n"/>
</layout>
</appender>
Ma si può andare oltre, e separare i log di ciascuna applicazione deployata sul server in file separati, specificando per ciascuna applicazione un appender di questo tipo:
<appender name="MyApp" class="org.jboss.logging.appender.DailyRollingFileAppender">
<errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
<param name="Append" value="false"/>
<param name="File" value="${jboss.server.home.dir}/log/myapp.log"/>
<param name="DatePattern" value="'.'yyyy-MM-dd"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>
</layout>
<filter class="org.jboss.logging.filter.TCLFilter">
<param name="AcceptOnMatch" value="true"/>
<param name="DeployURL" value="myapp.ear"/>
</filter>
</appender>
In entrambi i casi comunque è necessario aggiungere l'appender definito alla categoria di logging di base, definita nel tag root, come nell'esempio:
<root>
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
<appender-ref ref="SMTP"/>
<appender-ref ref="MyApp"/>
</root>
Nel file di configurazione di JBoss (server/default/conf/log4j.xml) sono presenti degli esempi di configurazione.
Ad esempio, per inviare i log di livello ERROR attraverso email ad un indirizzo jboss@smartlab.net basta configurare un appender in questo modo:
<appender name="SMTP" class="org.apache.log4j.net.SMTPAppender">
<errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
<param name="Threshold" value="ERROR"/>
<param name="To" value="jboss@smartlab.net"/>
<param name="From" value="jboss@myhost.smartlab.net"/>
<param name="Subject" value="JBoss Server Errors"/>
<param name="SMTPHost" value="localhost"/>
<param name="BufferSize" value="10"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c] %m%n"/>
</layout>
</appender>
Ma si può andare oltre, e separare i log di ciascuna applicazione deployata sul server in file separati, specificando per ciascuna applicazione un appender di questo tipo:
<appender name="MyApp" class="org.jboss.logging.appender.DailyRollingFileAppender">
<errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
<param name="Append" value="false"/>
<param name="File" value="${jboss.server.home.dir}/log/myapp.log"/>
<param name="DatePattern" value="'.'yyyy-MM-dd"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>
</layout>
<filter class="org.jboss.logging.filter.TCLFilter">
<param name="AcceptOnMatch" value="true"/>
<param name="DeployURL" value="myapp.ear"/>
</filter>
</appender>
In entrambi i casi comunque è necessario aggiungere l'appender definito alla categoria di logging di base, definita nel tag root, come nell'esempio:
<root>
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
<appender-ref ref="SMTP"/>
<appender-ref ref="MyApp"/>
</root>
Nel file di configurazione di JBoss (server/default/conf/log4j.xml) sono presenti degli esempi di configurazione.