Log4j日志重复打印问题的解决方案

在Lab4中配置Log4j日志的时候,发现日志重复打印的问题。网上查了很多资料,发现介绍Log4j配置的文章数量不少,但提提供解决这个问题的方法却很少
首先看一下我的日志的配置:

log4j.rootLogger = debug,D,E,info

log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = logs.txt
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG 
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = [%-5p]%d{
     yyyy-MM-dd HH:mm:ss} method:%l%n%m%n

log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File = logs.txt
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR 
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = [%-5p]%d{
     yyyy-MM-dd HH:mm:ss} method:%l%n%m%n 

log4j.appender.info=org.apache.log4j.RollingFileAppender
log4j.appender.info.Threshold=INFO
log4j.appender.info.File=logs.txt
log4j.appender.info.MaxFileSize=200MB
log4j.appender.info.MaxBackupIndex=5
log4j.appender.info.layout=org.apache.log4j.PatternLayout
log4j.appender.info.layout.ConversionPattern=[%-5p]%d{
     yyyy-MM-dd HH:mm:ss} method:%l%n%m%n 

上面这个log4j.properties配置文件是个非常常规的文件,这是按照网上教程的模板配置的,应该没有什么问题,但是查看日志输出文件的时候,却发现同一条日志重复输出了两遍。
Log4j日志重复打印问题的解决方案_第1张图片
在网上查了好多解决方案,终于找到一种简单的解决方案。
使用filter进行日志过滤
这个其实是Log4j自带的方案,也是推荐方案,不知道为什么网上的资料却很少提到这点。
把log4j.properties配置文件修改成如下:

log4j.rootLogger = debug,D,E,info

log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = logs.txt
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG 
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = [%-5p]%d{
     yyyy-MM-dd HH:mm:ss} method:%l%n%m%n
log4j.appender.D.filter.infoFilter = org.apache.log4j.varia.LevelRangeFilter
log4j.appender.D.filter.infoFilter.LevelMin=DEBUG
log4j.appender.D.filter.infoFilter.LevelMax=DEBUG

log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File = logs.txt
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR 
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = [%-5p]%d{
     yyyy-MM-dd HH:mm:ss} method:%l%n%m%n 
log4j.appender.E.filter.infoFilter = org.apache.log4j.varia.LevelRangeFilter
log4j.appender.E.filter.infoFilter.LevelMin=ERROR
log4j.appender.E.filter.infoFilter.LevelMax=ERROR

log4j.appender.info=org.apache.log4j.RollingFileAppender
log4j.appender.info.Threshold=INFO
log4j.appender.info.File=logs.txt
log4j.appender.info.MaxFileSize=200MB
log4j.appender.info.MaxBackupIndex=5
log4j.appender.info.layout=org.apache.log4j.PatternLayout
log4j.appender.info.layout.ConversionPattern=[%-5p]%d{
     yyyy-MM-dd HH:mm:ss} method:%l%n%m%n 
log4j.appender.info.filter.infoFilter = org.apache.log4j.varia.LevelRangeFilter
log4j.appender.info.filter.infoFilter.LevelMin=INFO
log4j.appender.info.filter.infoFilter.LevelMax=INFO

通过以上配置模板即可解决各级别日志重复打印的问题。
我们再来看一下修改后的日志输出文件:

Log4j日志重复打印问题的解决方案_第2张图片
修改之后重复打印的问题就得到解决了。

参考:blog.csdn.net/weixin_34096182/article/details

你可能感兴趣的:(日志重复打印,log4j)