log4j详解与实战

log4j是一个非常强大的log记录软件,下面我们就来看看在项目中如何使log4j。

首先当然是得到log4j的jar档,推荐使用1.2.X版,下载地址:

http://logging.apache.org/log4j/1.2/download.html

我们先看一个最简单的示例:

【示例1】

项目结构:

log4j详解与实战

【注:由于这里的多个项目公用一个jar档,我们可以创建一个专门放置jar档的Java工程,然后将jar档放到lib目录下。在要使用的工程中按图所示进行引用 】


log4j详解与实战

Java代码:

package com.coderdream.log4j;   
  

import org.apache.log4j.Logger;   

  

public class HelloLog4j {   

  

    private static Logger logger = Logger.getLogger(HelloLog4j.class);   

  

    /**  
     * @param args  
     */  

    public static void main(String[] args) {   


        // System.out.println("This is println message.");   

           

        // 记录debug级别的信息   


        logger.debug("This is debug message.");   


        // 记录info级别的信息   


        logger.info("This is info message.");   


        // 记录error级别的信息   


        logger.error("This is error message.");   

    }   
}  
package com.coderdream.log4j;

import org.apache.log4j.Logger;

public class HelloLog4j {

	private static Logger logger = Logger.getLogger(HelloLog4j.class);

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// System.out.println("This is println message.");
		
		// 记录debug级别的信息
		logger.debug("This is debug message.");
		// 记录info级别的信息
		logger.info("This is info message.");
		// 记录error级别的信息
		logger.error("This is error message.");
	}
}

  配置文件log4j.properties:

#设置级别和目的地   
log4j.rootLogger=debug,appender1   
  
#输出到控制台   
log4j.appender.appender1=org.apache.log4j.ConsoleAppender   
#设置输出样式   
log4j.appender.appender1.layout=org.apache.log4j.PatternLayout   
#自定义样式   

# %r 时间 0  

# %t 方法名 main   
# %p 优先级 DEBUG/INFO/ERROR   
# %c 所属类的全名(包括包名)   
# %l 发生的位置,在某个类的某行   
# %m 输出代码中指定的讯息,如log(message)中的message   
# %n 输出一个换行   
  
log4j.appender.appender1.layout.ConversionPattern=%r [%t] [%p] - %c -%l -%m%n  
#设置级别和目的地
log4j.rootLogger=debug,appender1

#输出到控制台
log4j.appender.appender1=org.apache.log4j.ConsoleAppender
#设置输出样式
log4j.appender.appender1.layout=org.apache.log4j.PatternLayout
#自定义样式
# %r 时间 0
# %t 方法名 main
# %p 优先级 DEBUG/INFO/ERROR
# %c 所属类的全名(包括包名)
# %l 发生的位置,在某个类的某行
# %m 输出代码中指定的讯息,如log(message)中的message
# %n 输出一个换行

log4j.appender.appender1.layout.ConversionPattern=%r [%t] [%p] - %c -%l -%m%n

输出结果:

package com.coderdream.log4jDao;   
  

import org.apache.log4j.Logger;   

  

public class HelloDao {   


    private static Logger logger = Logger.getLogger(HelloDao.class);   

  

    /**  
     * @param args  
     */  

    public static void main(String[] args) {   


        // 记录debug级别的信息   


        logger.debug("This is debug message from Dao.");   


        // 记录info级别的信息   


        logger.info("This is info message from Dao.");   


        // 记录error级别的信息   


        logger.error("This is error message from Dao.");   

    }   
}  
package com.coderdream.log4jDao;

import org.apache.log4j.Logger;

public class HelloDao {
	private static Logger logger = Logger.getLogger(HelloDao.class);

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// 记录debug级别的信息
		logger.debug("This is debug message from Dao.");
		// 记录info级别的信息
		logger.info("This is info message from Dao.");
		// 记录error级别的信息
		logger.error("This is error message from Dao.");
	}
}

      如果这个类作为基类,如J2EE中的BaseDao、BaseAction、BaseService等等,则我们可以将各层的日志信息分类输出到各个文件。

// 记录debug级别的信息   

if (logger.isDebugEnabled()) {   


    logger.debug("This is debug message from Dao.");   

}   
  

// 记录info级别的信息   


if (logger.isInfoEnabled()) {   


    logger.info("This is info message from Dao.");   

}   
  

// 记录error级别的信息   


logger.error("This is error message from Dao.");  


参考资料:
1、log4j 详 解( 一)
2、log4j 详解(二)
3、Log4j基本使用方法
4、Log4j 用法(一)
5、log4j.properties 使用说明
6、Apache Log4j详解
7、log4j.xml配置详解
8、log4j.xml配置详解

相关推荐