Log4j – 如何配置多个logger以及logger继承特性详解

内容简介:

本文主要介绍 在一个系统中如何通过log4j的配置文件配置出多个logger,使得该系统可以在不同路径下输出多个内容不同的log 文件。并通过该实例的实现过程进一步讲解log4j的一些特性。

 

具体内容:

1.       如何在项目中配置log4j使得该系统可以输出web test的日志文件(自定义格式)到工程dist目录下的junitLog/WebTestLog.log目录下,输出508 check日志(html格式)到c:/508log.html路径下?

第一步:加入log4j-1.2.8.jar到lib下。
第二步:在CLASSPATH下建立log4j.properties(即将log4j的配置文件放在src的根目录下)。

第三步:根据需要修改log4j配置文件中的相应属性,修改之前就必须知道这些都是干什么的,在后面的部分具体讲解。

该实例中 根据需要 配好的log4j.properties如下:

[plain]  view plain  copy
  1. log4j.rootLogger=ERROR  
  2. log4j.logger.com.testframework.web=ERROR,A3  
  3. log4j.logger.com.testframework.util= ERROR,A1,A2  
  4.   
  5. log4j.appender.A1=org.apache.log4j.ConsoleAppender  
  6. log4j.appender.A1.layout=org.apache.log4j.PatternLayout  
  7. log4j.appender.A1.layout.ConversionPattern=%m%n  
  8.   
  9. log4j.appender.A2=org.apache.log4j.RollingFileAppender  
  10. log4j.appender.A2.File=c:/508log.html  
  11. log4j.appender.A2.MaxFileSize=50000KB  
  12. log4j.appender.A2.MaxBackupIndex=1  
  13. log4j.appender.A2.layout=org.apache.log4j.HTMLLayout  
  14.   
  15. log4j.appender.A3=org.apache.log4j.RollingFileAppender  
  16. log4j.appender.A3.File=junitLog/WebTestLog.log  
  17. log4j.appender.A3.MaxFileSize=50000KB  
  18. log4j.appender.A3.MaxBackupIndex=1  
  19. log4j.appender.A3.layout=org.apache.log4j.PatternLayout  
  20. log4j.appender.A3.layout.ConversionPattern=%d{yyyy-MM-ddHH:mm:ss}%5p[%t](%F:%L)-%m%n  


第四步:在要输出日志的类中加入相关语句。

[java]  view plain  copy
  1. package com. testframework.web  
  2.   
  3. Public class PersonTest{  
  4.   
  5.     //加载logger的语句- 加粗部分为log4j配置文件中配置的logger的名字  
  6.     static Logger logger = Logger.getLogger(PersonTest .class);  
  7.   
  8.     public void testGetPersonNameById(int personId){  
  9.                           ........      
  10.   
  11.    String personName = "";  
  12.   
  13.         try {  
  14.                 personName= dataPool. getPersonNameById (int personId);  
  15.                            
  16.                } catch (Exception e){  
  17.   
  18.                String errorMsg = " Get Person Name Failed!";  
  19.   
  20.               //利用logger输出信息到日志中  
  21.               logger.error(errorMsg,e);  
  22.               fail(errorMsg);  
  23.   
  24.               }  
  25.   
  26.                           ........  
  27.   
  28.      }  
  29.   
  30. }  

      Note:由于Log4j中Logger具有java的继承特性,所以在这个实例中,为了实现‘com. testframework.web’包下的所有类都可以使用Appender A3将Error级别以上的信息输出到工程dist目录下的junitLog/WebTestLog.log日志文件中。所以在properties文件中用包名定义了一个logger

                                 log4j.logger.com.testframework.web=ERROR,A3

且在java代码中用该包中的类名来加载logger

                                staticLogger logger = Logger.getLogger(PersonTest.class);

       此时,在java代码中所加载的这个logger的名字是com.testframework.web.PersonTest, 根据继承原理,由于在log4j配置文件中没有定义这个logger的level和appender,所以这个logger将自动继承其父logger‘com.testframework.web’的level和appender设置。

对于log4j的java继承原理,后面的部分会详细介绍。

你可能感兴趣的:(Log4j – 如何配置多个logger以及logger继承特性详解)