引用
理论中浅谈,实践中理解。用例子还实践最为直接和明了的总结了。
需求:
项目名: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也是用的相对地址,所以执行后也在项目文件夹里面。