【问题标题】:log4j properties: LevelMatchFilter doesn't worklog4j 属性:LevelMatchFilter 不起作用
【发布时间】:2012-06-28 11:37:57
【问题描述】:

我试图将我的日志记录路由到两个不同的文件:一个用于 INFO 消息,另一个用于 ERROR。 LevelMatchFilter 似乎是正确的方法。不幸的是,所有消息都记录到我的 info.log 中,而不仅仅是 INFO 消息。任何想法我做错了什么?

这是我的配置:

# Define the root logger with appender file
log4j.logger.com.my.class.ClassName=DEBUG, FILE, ERR, CA

# Define the info file appender
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=info.log
log4j.appender.FILE.filter.a=org.apache.log4j.varia.LevelMatchFilter
log4j.appender.FILE.filter.a.LevelToMatch=INFO
log4j.appender.FILE.filter.a.AcceptOnMatch=true

# Define the layout for info file appender
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%d %-5p %c - %m%n

# Define the error file appender
log4j.appender.ERR=org.apache.log4j.FileAppender
log4j.appender.ERR.File=error.log
log4j.appender.ERR.Threshold=ERROR

# Define the layout for error file appender
log4j.appender.ERR.layout=org.apache.log4j.PatternLayout
log4j.appender.ERR.layout.conversionPattern=%d %-5p %c - %m%n


log4j.appender.CA=org.apache.log4j.ConsoleAppender
log4j.appender.CA.layout=org.apache.log4j.PatternLayout
log4j.appender.CA.layout.ConversionPattern=%d %-5p %c - %m%n

【问题讨论】:

    标签: java logging properties log4j


    【解决方案1】:

    我认为你的文件 appender 配置应该是这样的:

     # Define the info file appender
    log4j.appender.FILE=org.apache.log4j.FileAppender    
    log4j.appender.FILE.File=info.log    
    log4j.appender.FILE.Threshold=INFO    
    log4j.appender.FILE.filter.a=org.apache.log4j.varia.LevelMatchFilter    
    log4j.appender.FILE.filter.a.LevelToMatch=INFO    
    log4j.appender.FILE.filter.a.AcceptOnMatch=true    
    log4j.appender.FILE.filter.b=org.apache.log4j.varia.LevelMatchFilter    
    log4j.appender.FILE.filter.b.LevelToMatch=ERROR    
    log4j.appender.FILE.filter.b.AcceptOnMatch=false    
    log4j.appender.FILE.filter.c=org.apache.log4j.varia.LevelMatchFilter    
    log4j.appender.FILE.filter.c.LevelToMatch=FATAL    
    log4j.appender.FILE.filter.c.AcceptOnMatch=false 
    

    【讨论】:

      【解决方案2】:

      我终于在不制作外部 XML 文件的情况下获得了类似问题的解决方案(使用过滤器),这是生成的代码:

      log4j.rootLogger=info, R, ERROR
      
      #### only INFO
      log4j.appender.R=org.apache.log4j.RollingFileAppender
      log4j.appender.R.File=FacturaElectronica.log
      log4j.appender.R.MaxFileSize=500KB
      log4j.appender.R.MaxBackupIndex=1
      log4j.appender.R.layout=org.apache.log4j.PatternLayout
      log4j.appender.R.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
      log4j.appender.R.filter.a=org.apache.log4j.varia.LevelRangeFilter
      log4j.appender.R.filter.a.LevelMin=INFO
      log4j.appender.R.filter.a.LevelMax=INFO
      
      
      #### only ERROR
      log4j.appender.ERROR=org.apache.log4j.RollingFileAppender
      log4j.appender.ERROR.File=FacturaElectronicaError.txt
      log4j.appender.ERROR.MaxFileSize=500KB
      log4j.appender.ERROR.MaxBackupIndex=1
      log4j.appender.ERROR.layout=org.apache.log4j.PatternLayout
      log4j.appender.ERROR.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
      log4j.appender.ERROR.filter.b=org.apache.log4j.varia.LevelMatchFilter
      log4j.appender.ERROR.filter.b.LevelToMatch=ERROR
      log4j.appender.ERROR.filter.b.AcceptOnMatch=true
      log4j.appender.ERROR.Threshold=ERROR
      

      【讨论】:

        【解决方案3】:

        LevelMatchFilter 与你的需要无关。

        您需要定义 2 个记录器,一个将具有 ERR 附加程序,另一个将具有 FILE 附加程序:

        log4j.logger.my.info.logger=INFO, FILE
        log4j.logger.my.err.logger=ERROR, ERR
        

        并且在代码中你需要在初始化记录器时提供记录器名称:

        static Logger logger = Logger.getLogger("my.info.logger");
        

        【讨论】:

        • 那位先生,不是我想要的。我不想在我的代码中处理两个不同的记录器。此外,如果您问我,过滤器是正确的方法。如果我使用 LevelMin=INFO 和 LevelMax=INFO 的 LevelRangeFilter,它工作得很好;)
        猜你喜欢
        • 2014-03-22
        • 1970-01-01
        • 2011-01-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-06
        • 2011-03-31
        • 2018-11-19
        相关资源
        最近更新 更多