使log4j不同level的日志输出到不同文件

来源:互联网 发布:小型网络拓扑图 编辑:程序博客网 时间:2024/05/22 17:15

 

对于一个大型系统,尤其是高访问量的web系统,要在一个记载了浩如烟海的info,甚至是debug日志信息的日志文件中检查那些重要的error或者fatal信息不是一件轻松的事,哪怕你用grep,那也是相当的被动的。如果我们能为同一个logger配置不同的file appender一个用于记载所有信息(对正式上线的系统一般是info level),另一个只记载error以上等级的那问题就解决了。log4j有这样控制属性吗,不常见,但是有^_^:
log4j.appender.errorfileout.Threshold = ERROR
xml格式的配置(放在appender标签中):<param name="Threshold" value="ERROR"/>

这样一来,ERROR及FATAL级别的信息就记录在errorfileout这个appender中了。下面给出一个较完整的配置文件例子:
log4j.rootLogger=DEBUG,stdout
log4j.logger.net.dxtop=DEBUG,fileout,errorfileout
#log4j.additivity.net.dxtop=false

#stdout appender
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d (%F:%L) %-5p %c - %m%n

#common file appender
log4j.appender.fileout=org.apache.log4j.RollingFileAppender
log4j.appender.fileout.File=d:/logs/sys.log
log4j.appender.fileout.layout=org.apache.log4j.PatternLayout
log4j.appender.fileout.layout.ConversionPattern=%d [%t] (%F:%L) %-5p %c - %m%n
log4j.appender.fileout.MaxFileSize=100000KB
log4j.appender.fileout.MaxBackupIndex=200

#error file appender
log4j.appender.errorfileout=org.apache.log4j.RollingFileAppender
log4j.appender.errorfileout.File=d:/logs/sys_error.log
log4j.appender.errorfileout.layout=org.apache.log4j.PatternLayout
log4j.appender.errorfileout.layout.ConversionPattern=%d [%t] (%F:%L) %-5p %c - %m%n
log4j.appender.errorfileout.MaxFileSize=100000KB
log4j.appender.errorfileout.Threshold = ERROR
log4j.appender.errorfileout.MaxBackupIndex=200

如果你不想ERROR和FATAL的放在一起,你可以参考此文章后面列出的参考文档,对大多数人来说,上面的配置方法就够用了。

另外一个不太常见的属性additivity觉得也很有用,参见上面文件中的:#log4j.additivity.net.dxtop=false
若该值为false,则net.dxtop这个logger的appender所输出的信息就不会写入到它的parent logger的appender中去。

参考文档:
http://jackgm.spaces.live.com/blog/cns!9722965D743EDAF9!774.entry
http://www.daniweb.com/forums/thread109937.html