1

我正在使用 LOG4j 和 SLF4j。

我试图将每条日志消息分成不同的文件(info.log、warning.log 和 error.log)。

例如,我使用log4j.appender.infoFile.Threshold=INFO过滤 DEBUG 消息,但我不知道如何排除 WARN 和 ERROR 消息。我只想写 INFO 消息。与warning.log 相同。

# Direct log messages to INFO log file
  log4j.appender.infoFile=org.apache.log4j.RollingFileAppender
  log4j.appender.infoFile.File=info.log 
  log4j.appender.infoFile.MaxFileSize=1MB
  log4j.appender.infoFile.MaxBackupIndex=1
  log4j.appender.infoFile.append=false 
  log4j.appender.infoFile.layout=org.apache.log4j.PatternLayout
  log4j.appender.infoFile.Threshold=INFO
4

3 回答 3

1

LevelMatchFilter 是您正在寻找的:

http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/varia/LevelMatchFilter.html

它可以添加到附加程序(每个日志级别需要一个)并用于过滤日志级别。只需为每个级别设置一个,并让他们拒绝所有内容,但它是自己的级别。

于 2013-09-10T13:52:17.067 回答
1

从文档中,“是否可以按级别将日志输出定向到不同的附加程序?” , 它说:

如果您必须通过精确级别匹配过滤事件,那么您可以将 a 附加 LevelMatchFilter到任何附加程序以通过精确级别匹配过滤掉日志记录事件。

好像这就是你要找的东西。

于 2013-09-10T13:52:17.683 回答
0

最终代码是:

# Direct log messages to INFO log file
    log4j.appender.infoFile=org.apache.log4j.RollingFileAppender
    log4j.appender.infoFile.File=info.out 
    log4j.appender.infoFile.MaxFileSize=1MB
    log4j.appender.infoFile.MaxBackupIndex=1
    log4j.appender.infoFile.append=false 
    log4j.appender.infoFile.layout=org.apache.log4j.PatternLayout
    log4j.appender.infoFile.Threshold=INFO

    log4j.appender.infoFile.filter.a=org.apache.log4j.varia.LevelMatchFilter
    log4j.appender.infoFile.filter.a.LevelToMatch=INFO    
    log4j.appender.infoFile.filter.a.AcceptOnMatch=true 
    log4j.appender.infoFile.filter.b=org.apache.log4j.varia.LevelMatchFilter
    log4j.appender.infoFile.filter.b.LevelToMatch=ERROR    
    log4j.appender.infoFile.filter.b.AcceptOnMatch=false    
    log4j.appender.infoFile.filter.c=org.apache.log4j.varia.LevelMatchFilter
    log4j.appender.infoFile.filter.c.LevelToMatch=WARN    
    log4j.appender.infoFile.filter.c.AcceptOnMatch=false  
    log4j.appender.infoFile.filter.e=org.apache.log4j.varia.LevelMatchFilter
    log4j.appender.infoFile.filter.e.LevelToMatch=DEBUG    
    log4j.appender.infoFile.filter.e.AcceptOnMatch=false  
    log4j.appender.infoFile.filter.f=org.apache.log4j.varia.LevelMatchFilter
    log4j.appender.infoFile.filter.f.LevelToMatch=FATAL    
    log4j.appender.infoFile.filter.f.AcceptOnMatch=false  

我不知道它是否对某人有用

于 2013-09-10T14:25:54.457 回答