Log4j 学习笔记之三
原创
©著作权归作者所有:来自51CTO博客作者mb63e0703549da8的原创作品,请联系作者获取转载授权,否则将追究法律责任
引言:
[quote]理论中浅谈,实践中理解。用例子还实践最为直接和明了的总结了。[/quote]
需求:
项目名: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也是用的相对地址,所以执行后也在项目文件夹里面。