The SmartWeb Project

07 giugno 2006

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.