Tuesday, June 3, 2014

Log4j using Logger Wrapper with RollingFileAppender

Please follow the below steps to implement this example.

Step 1 : XML file for configuration.


<xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration debug="true"
       <appender name="ROLLING" class="org.apache.log4j.RollingFileAppender">
              <param name="File" value="sample.log" />
              <param name="MaxFileSize" value="100KB" />
              <param name="MaxBackupIndex" value="2" />
              <layout class="org.apache.log4j.PatternLayout">
                     <param name="ConversionPattern" value="%d %5p [%t] %c (%F:%L) - %m%n" />
              <appender-ref ref="ROLLING" />

Step 2 : Class to load logger configuration.


public final class LoggerConfiguration {
       private LoggerConfiguration() {

       private static class LoggerConfigurationHolder {
              private static final LoggerConfiguration INSTANCE = new LoggerConfiguration();

       public static LoggerConfiguration configure() {
              return LoggerConfigurationHolder.INSTANCE;

Step 3 : Class to log the logging details


import org.apache.log4j.Level;
import org.apache.log4j.Logger;

public class MyLogger {
       private static String FQCN = MyLogger.class.getName();
       private Logger logger;

       public MyLogger(String name) {
              this.logger = Logger.getLogger(name);

       public MyLogger(@SuppressWarnings("rawtypes") Class clazz) {

       public void trace(Object message) {
              logger.log(FQCN, Level.TRACE, message, null);

       public void trace(Object message, Throwable t) {
              logger.log(FQCN, Level.TRACE, message, t);

       public boolean isTraceEnabled() {
              return logger.isEnabledFor(Level.TRACE);

       public void debug(Object message) {
              logger.log(FQCN, Level.DEBUG, message, null);

       public void debug(Object message, Throwable throwable) {
              logger.log(FQCN, Level.DEBUG, message, throwable);

       public boolean isDebugEnabled() {
              return logger.isDebugEnabled();

       public void info(Object message) {
              logger.log(FQCN, Level.INFO, message, null);

       public void info(Object message, Throwable t) {
              logger.log(FQCN, Level.INFO, message, t);

       public boolean isInfoEnabled() {
              return logger.isInfoEnabled();

       public void warn(Object message) {
              logger.log(FQCN, Level.WARN, message, null);

       public void warn(Object message, Throwable t) {
              logger.log(FQCN, Level.WARN, message, t);

       public void error(Object message) {
              logger.log(FQCN, Level.ERROR, message, null);

       public void error(Object message, Throwable t) {
              logger.log(FQCN, Level.ERROR, message, t);

       public void fatal(Object message) {
              logger.log(FQCN, Level.FATAL, message, null);

       public void fatal(Object message, Throwable t) {
              logger.log(FQCN, Level.FATAL, message, t);

Step 4 : Class to test the Logger.


public class LoggerTest {
       private static MyLogger LOG = new MyLogger(LoggerTest.class);

       public static void main(String[] args) {
              LOG.debug("Debugging Message");
              LOG.error("Error Message");
              LOG.info("Information Message");
              LOG.warn("Warning Message");
              LOG.trace("Tracing Message");


No comments:

Post a Comment