内容简介:
本文主要介绍 在一个系统中如何通过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如下:
- log4j.rootLogger=ERROR
- log4j.logger.com.testframework.web=ERROR,A3
- log4j.logger.com.testframework.util= ERROR,A1,A2
-
- log4j.appender.A1=org.apache.log4j.ConsoleAppender
- log4j.appender.A1.layout=org.apache.log4j.PatternLayout
- log4j.appender.A1.layout.ConversionPattern=%m%n
-
- log4j.appender.A2=org.apache.log4j.RollingFileAppender
- log4j.appender.A2.File=c:/508log.html
- log4j.appender.A2.MaxFileSize=50000KB
- log4j.appender.A2.MaxBackupIndex=1
- log4j.appender.A2.layout=org.apache.log4j.HTMLLayout
-
- log4j.appender.A3=org.apache.log4j.RollingFileAppender
- log4j.appender.A3.File=junitLog/WebTestLog.log
- log4j.appender.A3.MaxFileSize=50000KB
- log4j.appender.A3.MaxBackupIndex=1
- log4j.appender.A3.layout=org.apache.log4j.PatternLayout
- log4j.appender.A3.layout.ConversionPattern=%d{yyyy-MM-ddHH:mm:ss}%5p[%t](%F:%L)-%m%n
第四步:在要输出日志的类中加入相关语句。
- package com. testframework.web
-
- Public class PersonTest{
-
-
- 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.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);
此时,在java代码中所加载的这个logger的名字是com.testframework.web.PersonTest, 根据继承原理,由于在log4j配置文件中没有定义这个logger的level和appender,所以这个logger将自动继承其父logger‘com.testframework.web’的level和appender设置。
对于log4j的java继承原理,后面的部分会详细介绍。