log4j的继承关系

  1. log4j配置如下:

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


  22.  以上配置定义存在3个logger(logger名称):rootLogger,com.testframework.web,com.testframework.util


  1. package com. testframework.web  
      
    Public class PersonTest{  
      
        //加载logger的语句- 加粗部分为log4j配置文件中配置的logger的名字  
        static Logger logger = Logger.getLogger(PersonTest .class);  
      
        public void testGetPersonNameById(int personId){  
                              ........      
      
       String personName = "";  
      
            try {  
                    personName= dataPool. getPersonNameById (int personId);  
                               
                   } catch (Exception e){  
      
                   String errorMsg = " Get Person Name Failed!";  
      
                  //利用logger输出信息到日志中  
                  logger.error(errorMsg,e);  
                  fail(errorMsg);  
      
                  }  
      
                              ........  
      
         }  
    }  

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

    PersonTest.class=com.testframework.web.PersonTest

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


    所有logger都继承rootlogger

    可以通过设置:log4j.additivity.qstk_recordbf.Log=false取消logger(recordbf.Log)的继承关系,即logger(recordbf.Log)不再继承rootlogger





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值