February 16, 2010

Configure Log4j (log4j.xml)

« Java3D Example | Main | Spring Roo Tutorial »

The Apache Log4J project offers a framework for logging aspects in Java software components. Today Apache Log4j is a defacto standard to realize priority/level based log messages in Java and .Net environments. The developer has to understand the following Log4J elements and classes to use this logging framework.

  • Appenders - defines handlers how to persist log entries, for example FileAppenders, SMTPAppenders, JDBCAppenders and so on
  • Level/Priority - diffentent levels of logging entries, e.g. INFO, DEBUG, ERROR, TRACE, ...
  • Logger - defines relations between packages and appenders, e.g. all classes of org.developers.* should be save per special appender
  • ...

You can configure your logging parameters per log4j.xml file, which should be saved at the root directory of your jar or source folder. The following log4j.xml file contains an basic configuration:
  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd" >
<log4j:configuration>
  <!-- APPENDERS LIST -->
  <!-- show log entries on console -->
  <appender name="consoleAppender" class="org.apache.log4j.ConsoleAppender">
    <layout class="org.apache.log4j.PatternLayout">
      <param name="ConversionPattern" value="%d{ABSOLUTE} %5p %c{1}:%L - %m%n"/>
    </layout>
  </appender> 

  <!-- log all logs to a separate log file every day -->
  <appender name="orgDevelopersLogFileAppender" class="org.apache.log4j.DailyRollingFileAppender">
    <param name="file" value="org-file.log" />
    <param name="datePattern" value="'.'yyyy-MM-dd" />
    <param name="append" value="true" />
    <layout class="org.apache.log4j.PatternLayout">
      <param name="ConversionPattern" value="%d [%t] %-5p %C{6} (%F:%L) - %m%n"/>
    </layout>
  </appender>

  <!-- log all logs to a separate log file every day -->
  <appender name="comDevelopersLogFileAppender" class="org.apache.log4j.DailyRollingFileAppender">
    <param name="file" value="file.log" />
    <param name="datePattern" value="'.'yyyy-MM-dd" />
    <param name="append" value="true" />
    <layout class="org.apache.log4j.PatternLayout">
      <param name="ConversionPattern" value="%d [%t] %-5p %C{6} (%F:%L) - %m%n"/>
    </layout>
  </appender>

  <!-- send all error logs to my email address -->
  <appender name="mailAppender" class="org.apache.log4j.net.SMTPAppender">
    <param name="SMTPHost" value="localhost" />
    <param name="From" value="info@developers-blog.org" />
    <param name="To" value="rafael@developers-blog.org" />
    <param name="Subject" value="[BLOG ERROR LOG] ErrorList" />
    <!-- if your buffer contains 50 mails, an email should be sent -->
    <param name="BufferSize" value="50" />
    <!-- send only errors per email -->
    <param name="threshold" value="error" />
    <layout class="org.apache.log4j.PatternLayout">
      <param name="ConversionPattern" value="%d{ABSOLUTE} %5p %c{1}:%L - %m%n" />
    </layout>
  </appender>

  <!-- LOGGER LIST -->
  <!-- log all classes in org.developers package -->
  <logger name="org.developers">
    <!-- level info logs -->
    <level value="INFO" />
    <appender-ref ref="orgDevelopersLogFileAppender"/>
  </logger>
  <logger name="com.developers">
    <!-- level debug logs -->
    <level value="DEBUG" />
    <appender-ref ref="mailAppender"/>
  </logger>

  <root>
    <priority value="debug"></priority>
    <!-- log all log entries on console -->
    <appender-ref ref="consoleAppender"/>
    <!-- push all error logs to mailAppender -->
    <appender-ref ref="mailAppender"/>
  </root>
</log4j:configuration>
Regards
Rafael Sobek

Technorati Tags:

Posted by rafael.sobek at 3:23 PM in Java

 

[Trackback URL for this entry]

Comment: schlind at Di, 16 Feb 4:58 PM

I suggest to remove the "comDevelopersLogFileAppender" because it points to the same file as the "orgDevelopersLogFileAppender" and is not referenced by a logger. Also the "mailAppender" could be enriched with credentials to show that smtp-authentication is possible. Good work!

Comment: Rafael at Di, 16 Feb 9:32 PM

Hi Sascha, thanks :-)

Pingback: Configure Log4j | Drakz Free Online Service at Mi, 17 Feb 7:33 PM

Configure Log4j
Languages , Technologies and Visions. Topics: Visions, Architecture Issues, Programming Languages , &#8230; Search: February 16, 2010. Original post: Configure Log4j Share and

Pingback: Spring Roo | Drakz Free Online Service at Mi, 17 Feb 7:33 PM

Configure Log4j
Blog &#8211; Programming Languages , Technologies and Visions. Topics: Visions, Architecture Issues, Programming Languages , .. View post: Spring Roo Share and

Your comment:

(not displayed)
 
 
 

Live Comment Preview:

 
« February »
SunMonTueWedThuFriSat
 123456
78910111213
14151617181920
21222324252627
28