Saturday, January 12, 2008

Log4j

Inserting log statements into your code is a low-tech method for debugging it. It may also be the only way because debuggers are not always available or applicable. This is often the case for distributed applications.

With log4j it is possible to enable logging at runtime without modifying the application binary. The log4j package is designed so that these statements can remain in shipped code without incurring a heavy performance cost. Logging behavior can be controlled by editing a configuration file, without touching the application binary.
so first we need to download log 4j jar file and put it into lib directory .
http://logging.apache.org/log4j/1.2/download.html"

Configure Log4j with Xml file
To configure log4j only we need to copy following log4j.xml file to src folder of project. And edit the location which the log message should be write as
< param name="File" value="../webapps/myporject/info.log > in the log4j.xml file .

log4j.xml

< ? xml version="1.0" encoding="UTF-8" ?>
< !DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
< log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j / ' >

< appender name="STDOUT" class="org.apache.log4j.ConsoleAppender" >
< layout class="org.apache.log4j.PatternLayout">
< param name="ConversionPattern" value="%p-- %c %d{ISO8601}-- %m%n" / >
< /layout>
< /appender>

< appender name="INFO" class="org.apache.log4j.RollingFileAppender">
< param name="File" value="../webapps/myporject/info.log"/> // the location and file name
< param name="Append" value="true" / >
< param name="MaxFileSize" value="5000KB" / >
< param name="MaxBackupIndex" value="2"/>
< layout class="org.apache.log4j.PatternLayout">
< param name="ConversionPattern" value=" %p --%c-- %d{ISO8601} -- %m%n" / >
< /layout>
< filter class="org.apache.log4j.varia.LevelRangeFilter" >
< param name="LevelMin" value="INFO" / >
< /filter>
< /appender>

< appender name="DEBUG" class="org.apache.log4j.RollingFileAppender >
< param name="File" value=" value="../webapps/myporject/logs/debug.log"/ >
< param name="Append" value="true"/>
< param name="MaxFileSize" value="5000KB"/ >
< param name="MaxBackupIndex" value="2"/ >
< layout class="org.apache.log4j.PatternLayout" >
< param name="ConversionPattern" value=" %p--%c %d{ISO8601} -- %m%n"/ >
< /layout>
< filter class="org.apache.log4j.varia.LevelRangeFilter" >
< param name="LevelMin" value="DEBUG" / >
< /filter>
< /appender>

< appender name="FATAL" class="org.apache.log4j.RollingFileAppender" >
< param name="File" value=" value="../webapps/myporject/logs/fatal.log"/ >
< param name="Append" value="true"/ >
< param name="MaxFileSize" value="5000KB"/ >
< param name="MaxBackupIndex" value="2"/ >
< layout class="org.apache.log4j.PatternLayout">
< param name="ConversionPattern" value=" %p--%c %d{ISO8601} -- %m%n"/ >
< /layout>
< filter class="org.apache.log4j.varia.LevelRangeFilter" >
< param name="LevelMin" value="FATAL" / >
< /filter>
< /appender>

< appender name="WARN" class="org.apache.log4j.RollingFileAppender" >
< param name="File" value="../webapps/myporject/logs/warn.log"/ >
< param name="Append" value="true"/ >
< param name="MaxFileSize" value="5000KB"/ >
< param name="MaxBackupIndex" value="2"/>
< layout class="org.apache.log4j.PatternLayout" >
< param name="ConversionPattern" value=" %p--%c %d{ISO8601} -- %m%n"/ >
< /layout>
< filter class="org.apache.log4j.varia.LevelRangeFilter" >
< param name="LevelMin" value="WARN" />
< /filter>
< /appender>

< appender name="ERROR" class="org.apache.log4j.RollingFileAppender" >
< param name="File" value="../webapps/myporject/logs/error.log"/ >
< param name="Append" value="true"/ >
< param name="MaxFileSize" value="5000KB"/ >
< param name="MaxBackupIndex" value="2"/ >
< layout class="org.apache.log4j.PatternLayout">
< param name="ConversionPattern" value="%p--%c %d{ISO8601} -- %m%n"/ >
< /layout>
< filter class="org.apache.log4j.varia.LevelRangeFilter">
< param name="LevelMin" value="ERROR" / >
< /filter>
< /appender>

< root>
< priority value="ALL"/>
< appender-ref ref="DEBUG"/>
< appender-ref ref="FATAL"/>
< appender-ref ref="INFO"/>
< appender-ref ref="WARN"/>
< appender-ref ref="ERROR"/>
< /root>

< /log4j:configuration>



Put log messages in the Class
After put above file to src folder in the project.Then we can use log4j as following code in the progrmme.

import org.apache.log4j.Logger;

class testlog()
{
Logger log=new Logger(testlog.class);
log.Infor("<>>>");// this simply print in specify
//locationwebapps/myporject/info.log
}