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
- ...
<?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>
RegardsRafael Sobek
Technorati Tags: Configure Log4J Logging

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!