Log4j 学习笔记之三

引言:
引用
理论中浅谈,实践中理解。用例子还实践最为直接和明了的总结了。


需求:
      项目名:LogPro
      文件目录
+LogPro  //项目名
    - A.java
    - B.java
    - TestMain.java   //主程序
    +bbb   //文件夹
        -C.java
        -D.java


其中,A、B、C、D四个文件中有着各自的execute的方法,方法里为日志的输出,如
public void execute(){
		log.info("class A info message");
		log.debug("class A debug message");
		log.error("class A error message");
	}


要求:
    一次执行,达下下面的要求:
    1、把A、B、C、D执行的日志信息输出到按制台上
    2、把A、B 的日志信息以a.log的文件输出
    3、把C、D 的日志信息以b.log的文件输出

具体的代码实现 :(使用的是commons-logging与log4j的结合)
public class A {
	//protected Logger log = Logger.getLogger(A.class.getName());
	protected Log log = LogFactory.getLog(A.class); //当前的类
	public void execute(){
		log.info("class A info message"); //里面的A是对这条信息的标识
		log.debug("class A debug message");
		log.error("class A error message");
	}
}

B、C、D类同上,只是有两处修改,请注意。

public class TestMain {

	// protected Logger log = Logger.getLogger(TestMain.class.getName());

	public void execute() {
		Log log = LogFactory.getLog(TestMain.class);

		log.info("class TestMain info message");
		log.debug("class TestMain debug message");
		log.error("class TestMain error message");

		A a = new A();
		B b = new B();
		C c = new C();
		D d = new D();

		a.execute();
		b.execute();
		c.execute();
		d.execute();
	}
	
	public static void main(String[] args) {

		TestMain testMain = new TestMain();
		testMain.execute();
	}
}

测试主类。

配置文件Log4j.properties
#print to console
log4j.rootLogger = debug, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t](%r %x  %c) (%F:%L) - %m%n

log4j.logger.A=debug,R
log4j.logger.B=debug,R

#print to file a.log
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=a.log
# Control the maximum log file size
log4j.appender.R.MaxFileSize=100KB
# Archive log files (one backup file here)
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d{yyyy-MM-dd hh:mm:ss}:%p %t %c - %m%n 


log4j.logger.bbb.C=debug,R2
log4j.logger.bbb.D=debug,R2
#print to file a.log
log4j.appender.R2=org.apache.log4j.RollingFileAppender
log4j.appender.R2.File=b.log
# Control the maximum log file size
log4j.appender.R2.MaxFileSize=100KB
# Archive log files (one backup file here)
log4j.appender.R2.MaxBackupIndex=1
log4j.appender.R2.layout=org.apache.log4j.PatternLayout
log4j.appender.R2.layout.ConversionPattern=%d{yyyy-MM-dd hh:mm:ss}:%p %t %c - %m%n 


运行,测试成功。
这里面我用的是maven工程,里面的log4.properties是放在classpath的,所以会自动加载,输出的a.log、b.log也是用的相对地址,所以执行后也在项目文件夹里面。

猜你喜欢

转载自iaiai.iteye.com/blog/1121111