Sunday, 18 August 2013

Log4j Example using xml configuration


In this tutorials we are going to see how to create simple log4j application using XML file Configuration with java program, previously we have seen log4j application using log4j using Property Configurator we can obtain same output using XML configuration file.
log4j.properties
log4j.properties

log4j.rootLogger= Debug,console

log4j.appender.console=org.apache.log4j.ConsoleAppender

log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%r [%t] %p %c %x - %m%n

Create java project called Log4jExample in your Eclipse IDE, then create package called com.javatutorialscorner.log4j.xml under log4j example,add log4j jar in your build path.I used log4j-1.2.17.jar jar for this application.you can download this jar from Apache web site.Create log4j.xml in your project directory or source directory, add the following configuration

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="console" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%r [%t] %p %c %x - %m%n" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="console" />
</root>
</log4j:configuration>

This Example work same as previous one. We used DOMConfigurator.configure() to load xml configuration.root tag  used to configure Level and Appender, in this example I used DEBUG as Level and Console appender as appender(console is name of appender).Layout  is used to define log message layout pattern which is configured inside appender tag PatternLayout is used to configure log4j message conversion pattern.We will see Pattern Layout in detail in upcoming chapter.

Now create java class called Log4jXMLExample under com.javatutorialscorner.log4j.xml package.

Log4jXMLExample.xml

package com.javatutorialscorner.log4j.xml;

import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.Logger;
import org.apache.log4j.xml.DOMConfigurator;

public class Log4jXMLExample {

private static final String FILE_PATH = "log4j.xml";
private static final Logger log = Logger.getLogger(Log4jXMLExample.class);

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
if (FILE_PATH == null) {
BasicConfigurator.configure();
log.info("Log4j Configured using Basic Configurator");
} else {
DOMConfigurator.configure(FILE_PATH);
log.info("Log4j Configured using DOMConfigurator Configurator");
}

log.debug("Debug message by Java Tutorials Corner");
log.info("Info message by Java Tutorials Corner");
log.warn("Warn message by Java Tutorials Corner");
log.error("Error message by Java Tutorials Corner");
log.fatal("Fatal message by Java Tutorials Corner");

}

}

Create instance for Logger class , getLogger(Log4jXMLExample.class) method accept fully qualified class name as its argument. In this example if xml file not exist in specified location then BasicConfigurator.configure() used to initialize log4j application otherwise  DOMConfigurator.configure(FILE_PATH)  loads the configuration from xml file .

now you can run the application, you will see the following output in console.

0 [main] INFO com.javatutorialscorner.log4j.xml.Log4jXMLExample  - Log4j Configured using DOMConfigurator Configurator

0 [main] DEBUG com.javatutorialscorner.log4j.xml.Log4jXMLExample  - Debug message by Java Tutorials Corner


0 [main] INFO com.javatutorialscorner.log4j.xml.Log4jXMLExample  - Info message by Java Tutorials Corner


0 [main] WARN com.javatutorialscorner.log4j.xml.Log4jXMLExample  - Warn message by Java Tutorials Corner


0 [main] ERROR com.javatutorialscorner.log4j.xml.Log4jXMLExample  - Error message by Java Tutorials Corner


0 [main] FATAL com.javatutorialscorner.log4j.xml.Log4jXMLExample  - Fatal message by Java Tutorials Corner



0 comments

Post a Comment