【问题标题】:Log4J - disable logging for specific class - multiple appendersLog4J - 禁用特定类的日志记录 - 多个附加程序
【发布时间】:2013-01-11 14:22:57
【问题描述】:

我将 Log4J 设置为使用多个附加程序。这工作正常。但是,我想将默认日志级别设置为 DEBUG 的一个附加程序,并将特定类的日志记录限制为 INFO 及以上。我想出的适用于 FA 附加程序,但不适用于 DCSLOAD 和 DCSPROC 附加程序。我做错了什么?

# Set root logger level to DEBUG and its only appender to A1.
log4j.rootLogger = CA, FA

# CA is set to be a ConsoleAppender.
log4j.appender.CA=org.apache.log4j.ConsoleAppender

# CA uses PatternLayout.
log4j.appender.CA.layout=org.apache.log4j.PatternLayout
log4j.appender.CA.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5p %c{3} %x - %m%n

# FA uses PatternLayout.
log4j.appender.FA=org.apache.log4j.RollingFileAppender 
log4j.appender.FA.File=${catalina.base}/logs/dcs.log 
log4j.appender.FA.layout=org.apache.log4j.PatternLayout 
log4j.appender.FA.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5p %c{3} %x - %m%n
log4j.appender.FA.MaxFileSize=1024KB
log4j.appender.FA.MaxBackupIndex=100

# DCSPROC, DCSLOAD and DCSDB are all File Appenders to different targets
log4j.appender.DCSPROC=org.apache.log4j.RollingFileAppender
log4j.appender.DCSPROC.File=${catalina.base}/logs/dcs_process.log 
log4j.appender.DCSPROC.layout=org.apache.log4j.PatternLayout 
log4j.appender.DCSPROC.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5p %c{3} %x - %m%n
log4j.appender.DCSPROC.MaxFileSize=1024KB
log4j.appender.DCSPROC.MaxBackupIndex=100

log4j.appender.DCSLOAD=org.apache.log4j.RollingFileAppender
log4j.appender.DCSLOAD.File=${catalina.base}/logs/dcs_business.log 
log4j.appender.DCSLOAD.layout=org.apache.log4j.PatternLayout 
log4j.appender.DCSLOAD.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5p %c{3} %x - %m%n
log4j.appender.DCSLOAD.MaxFileSize=1024KB
log4j.appender.DCSLOAD.MaxBackupIndex=100

log4j.appender.DCSDB=org.apache.log4j.RollingFileAppender
log4j.appender.DCSDB.File=${catalina.base}/logs/dcs_database.log 
log4j.appender.DCSDB.layout=org.apache.log4j.PatternLayout 
log4j.appender.DCSDB.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5p %c{3} %x - %m%n
log4j.appender.DCSDB.MaxFileSize=1024KB
log4j.appender.DCSDB.MaxBackupIndex=100

# set default logging level for outputs
log4j.logger.CA = DEBUG
log4j.logger.FA = DEBUG

log4j.logger.DCSDB = DEBUG, DCSDB
log4j.logger.DCSPROC = DEBUG, DCSPROC
log4j.logger.DCSLOAD = DEBUG, DCSLOAD

log4j.additivity.DCSDB=false
log4j.additivity.DCSPROC=false
log4j.additivity.DCSLOAD=false

#This works
log4j.logger.LoginServlet=INFO, FA

#These two do not  
log4j.logger.LoginServlet=INFO, DCSLOAD
log4j.logger.LoginServlet=INFO, DCSPROC

【问题讨论】:

  • 好的,我知道我需要做什么了。我将我的类级调试更改为这个,现在它似乎正在工作:log4j.logger.LoginServlet=DEBUG

标签: log4j


【解决方案1】:

改变这些:

    log4j.logger.DCSDB = DEBUG, DCSDB
    log4j.logger.DCSPROC = DEBUG, DCSPROC
    log4j.logger.DCSLOAD = DEBUG, DCSLOAD

到

    log4j.logger.DCSDB = DEBUG
    log4j.logger.DCSPROC = DEBUG
    log4j.logger.DCSLOAD = DEBUG

【讨论】:

  • 我做了这个更改,它确实关闭了所有附加程序的调试日志记录。但是,当我在所有三个地方将 LoginServlet 类的日志级别都更改为 DEBUG 时,我只能调试 FA 附加程序,而不是 DCSLOAD 或 DCSPROC 附加程序。
  • 如果要为单个logger定义多个appender,需要这样定义:log4j.logger.LoginServlet=INFO, FA, DCSLOAD, DCSPROC
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-09-12
  • 2011-07-14
  • 1970-01-01
  • 1970-01-01
  • 2012-11-17
  • 2011-07-16
  • 2015-07-05
相关资源
最近更新 更多