【问题标题】:How to use the same logger to log different levels to console + logfile?如何使用同一个记录器将不同级别记录到控制台+日志文件?
【发布时间】:2013-11-05 12:18:42
【问题描述】:

我有一个 log4j 记录器,它当前将日志写入控制台和文件,工作正常。

稍后我想将其配置为将 INFO + ERROR 记录到日志文件中,但仅在控制台上显示 ERROR。为了实现这一目标,我需要做出哪些改变?

log4j.rootLogger=INFO, console, MyFileAppender

log4j.logger.org.apache.cxf=INFO, console
log4j.logger.org.apache.cxf.interceptor.LoggingInInterceptor=INFO, console
log4j.logger.org.apache.cxf.interceptor.LoggingOutInterceptor=INFO, console

log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Target=System.out

log4j.appender.MyFileAppender=org.apache.log4j.RollingFileAppender
log4j.appender.MyFileAppender.Append=true
log4j.appender.MyFileAppender.File=c:/logs.log

此外,我想阻止将 CXF XML 请求记录到文件中。但我希望它们仍然显示在控制台中。怎么样?

【问题讨论】:

  • 尝试将 log4j.logger.org.apache.cxf=INFO, console 更改为 log4j.logger.org.apache.cxf=WARN, MyFileAppender 我认为 rootLogger 会自动在两个附加程序的 INFO 中记录所有内容。您可能可以在包级别覆盖。

标签: java web-services log4j cxf


【解决方案1】:

基于 Appender 的配置

必须单独配置每个附加程序的日志级别,除非它与根级别配置相同。下面的示例log4.properties 文件配置为将INFO 及以上版本记录到控制台中,但仅将ERROR 及以上版本记录到文件中。

log4j.appender.[appender-name].Threshold=[Level]

查看下面示例的最后一行(来自“How to integrate log4j with your Java project”)。

# root level configurations 
log4j.rootLogger=INFO,console,file   

# configuration for console outputs  
log4j.appender.console=org.apache.log4j.ConsoleAppender  
log4j.appender.console.layout=org.apache.log4j.PatternLayout  

# configuration for file output (into a file named messages.log)  
log4j.appender.file=org.apache.log4j.RollingFileAppender  
log4j.appender.file.File=messages.log  
log4j.appender.file.layout=org.apache.log4j.PatternLayout 

# threshold for file output 
log4j.appender.file.Threshold=ERROR

基于包的日志级别

以下任何一项都会有所帮助。

log4j.logger.[package]=[Level]
log4j.logger.[package]=[Level], [Appender]

举个例子:

log4j.logger.org.apache.cxf=INFO, console

【讨论】:

    【解决方案2】:

    根据this SO question (and its answer),您必须在附加程序上设置阈值:

    log4j.appender.console=org.apache.log4j.ConsoleAppender
    log4j.appender.console.Target=System.out
    log4j.appender.console.Threshold=ERROR
    
    log4j.appender.MyFileAppender=org.apache.log4j.RollingFileAppender
    log4j.appender.MyFileAppender.Append=true
    log4j.appender.MyFileAppender.File=c:/logs.log
    log4j.appender.MyFileAppender.Threshold=INFO
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-14
      • 2020-12-25
      • 2014-02-06
      • 1970-01-01
      • 2011-08-25
      相关资源
      最近更新 更多