在大型的合作项目开发中,有时会要求将日志分模块记录,下面是我的一个log4j.properties配置文件:
#分模块存储
log4j.rootLogger=debug,appender1,appender2
log4j.logger.moduleA=info,appender1
log4j.logger.moduleB=warn,appender2
# 屏蔽rootlogger的配置
log4j.additivity.moduleA=false
log4j.additivity.moduleB=false
#输出到文件(这里默认为追加方式)
#每天产生一个文件
log4j.appender.appender1=org.apache.log4j.DailyRollingFileAppender
#设定输出的布局为模式布局
log4j.appender.appender1.layout=org.apache.log4j.PatternLayout
## 输出DEBUG级别以上的日志
log4j.appender.appender1.Threshold = info
#设定输出的格式
log4j.appender.appender1.layout.ConversionPattern=[%p]%d{yyyy-MM-dd HH:mm:ss}:%m%n
#设定输出到那个文件
log4j.appender.appender1.File=log/log4j.log
#文件大小到达指定尺寸的时候产生一个新的文件
log4j.appender.appender2=org.apache.log4j.RollingFileAppender
log4j.appender.appender2.Threshold = info
log4j.appender.appender2.layout=org.apache.log4j.PatternLayout
log4j.appender.appender2.layout.ConversionPattern=[%p]%d{yyyy-MM-dd HH:mm:ss}:%m%n
log4j.appender.appender2.MaxFileSize=10MB
log4j.appender.appender2.File=log/error.log
log4j.appender.app=org.apache.log4j.DailyRollingFileAppender
----------------------------------------------------------------------
运行:
//分模块存储
Logger LoggerA = Logger.getLogger("moduleA");
Logger LoggerB = Logger.getLogger("moduleB");
LoggerA.debug("debug");
LoggerA.info("info");
LoggerA.warn("warn");
LoggerA.error("error");
LoggerB.debug("debug");
LoggerB.info("info");
LoggerB.warn("warn");
LoggerB.error("error");
----------------------------------------------------------------------
在这个配置中,注意:
1.log4j.logger.moduleA=info,appender1 表示:moduleA模块的输出级别最小为info。当然实际输出级别和appender1 的最小输出级别也有关。取他们两个的交集输出.
2.log4j.additivity.moduleA=false 因为在log4j.rootLogger=debug 设置了log4j的根 最小输出级别为debug。在moduleA 中只要求输出 info 级别以上的,那就要屏蔽 根的设置了。