log4j日志分模块打印,同时不打印到控制台上

   因为定时刷新程序的启用,致使catalina.out配置文件中打入大量日志,导致程序调试困难。没法正常查看日志。因此客户要求将性能流量配置日志迁移出catalina.out目录。修改log4j配置文件后,发现分文件中有了日志输出,可是,catalina.out文件中依然有性能流量日志输出。 java

原始配置方法以下:
log4j.logger.com.test.cao.snmpgather = INFO, snmpgather

log4j.appender.snmpgather=org.apache.log4j.DailyRollingFileAppender

log4j.appender.snmpgather.File=${catalina.home}/logs/performance/snmpgather_

log4j.appender.snmpgather.DatePattern= yyyy-MM- dd'.log'

log4j.appender.snmpgather.layout=org.apache.log4j.PatternLayout

log4j.appender.snmpgather.layout.ConversionPattern= %-d{yyyy -MM-dd HH:mm:ss,SSS} [%p] [%C.%M:%L] %m%n
后来发现了以下方法,则可将日志从catalina.out工做台日志文件中移出,

log4j.additivity apache


现配置文件以下:       
log4j.logger.com.test.cao.snmpgather = INFO, snmpgather

log4j.appender.snmpgather=org.apache.log4j.DailyRollingFileAppender

log4j.appender.snmpgather.File=${catalina.home}/logs/performance/snmpgather_

log4j.appender.snmpgather.DatePattern= yyyy-MM- dd'.log'

log4j.appender.snmpgather.layout=org.apache.log4j.PatternLayout

log4j.appender.snmpgather.layout.ConversionPattern= %-d{yyyy -MM-dd HH:mm:ss,SSS} [%p] [%C.%M:%L] %m%n
 
log4j.additivity.com.linkage.module.liposs.system.cao.snmpgather = false
 
下面是log4j.additivity解释:
log4j.additivity是 子Logger 是否继承 父Logger 的 输出源(appender) 的标志位。
具体说,默认状况下 子Logger 会继承 父Logger 的appender,也就是说 子Logger 会在 父Logger 的appender里输出。
如果additivity设为false,则 子Logger 只会在本身的appender里输出,而不会在 父Logger 的appender里输出。
          
因为父log为:       
log4j.rootCategory=, A1 , R

log4j.appender.A1=org.apache.log4j.ConsoleAppender

log4j.appender.A1.Threshold=INFO

log4j.appender.A1.layout=org.apache.log4j.PatternLayout

log4j.appender.A1.layout.ConversionPattern= %-d{yyyy -MM-dd HH:mm:ss} [%c]-[%p] %m%n

log4j.appender.R.Threshold=INFO

log4j.appender.R.MaxFileSize=100KB

log4j.appender.R.MaxBackupIndex=10

log4j.appender.R.layout=org.apache.log4j.PatternLayout

log4j.appender.R.layout.ConversionPattern= %p %t %c - %m%n
 
因此会打到工做台中。
将additivity设为false则只依赖与自身的配置。
相关文章
相关标签/搜索