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.");  
    }  
}  

  配置文件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  

输出结果:

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.");  

相关推荐