【问题标题】:How to write only INFO logs in log file log4j?如何在日志文件 log4j 中只写入 INFO 日志?
【发布时间】:2016-08-02 21:20:26
【问题描述】:

我只想将INFO 日志写入logfile,下面是我的log4j 配置

log4j.properties 文件是:

log4j.rootLogger = INFO, FILE,
log4j.appender.FILE=org.apache.log4j.RollingFileAppender
log4j.appender.FILE.File=logs.out
log4j.appender.FILE.ImmediateFlush=true
log4j.appender.FILE.Threshold=INFO
log4j.appender.FILE.Append=true
log4j.appender.FILE.MaxFileSize=100KB
log4j.appender.FILE.MaxBackupIndex=2
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=%d{dd MMM yyyy HH:mm:ss} %5p - %m%n

Java 文件是:

import org.apache.log4j.Logger;

public class Log4jDemo {

    private static Logger log=Logger.getLogger(Logger.class.getName());

    public static void main(String[] args) {
        log.info("info");
        log.error("error");
        log.fatal("fatal");
        log.warn("warn");
    }
}

logs.out 文件是:

12 Apr 2016 15:38:35  INFO - info
12 Apr 2016 15:38:35 ERROR - error
12 Apr 2016 15:38:35 FATAL - fatal
12 Apr 2016 15:38:35  WARN - warn

这里我在logs.out 文件中获取日志是INFO, ERROR, FATAL, WARN 但我只想将INFO 日志写入logs.out 文件?

任何人请建议,如何实现这个目标?

我的问题很独特,与 log4j 日志记录层次顺序 log4j logging hierarchy order

无关

这显示了log4j框架的默认配置,但我想实现自定义的,请你帮我解决这个问题。

【问题讨论】:

  • 所以您不想看到 ERROR、FATAL 或 WARN 以及它们发生的时间?
  • @javadev 这不是我的方案,为了显示 INFO 及更高版本,我只想要 INFO 日志
  • 但是你为什么要隐藏错误?程序崩溃并有错误日志是好事
  • @Tunaki 有一次我在一家公司工作,那里的开发人员将 any 日志显示为错误。事情并不总是按预期使用......所以这是我所看到的想要这个的原因之一。不过,OP 可能有完全不同的原因。

标签: java logging log4j


【解决方案1】:

我刚刚找到了您要查找的过滤器:org.apache.log4j.varia.LevelMatchFilter

但是

"请注意,过滤仅由 DOMConfigurator 支持。PropertyConfigurator 不支持过滤器。"

(来源:https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/spi/Filter.html

所以你可能不得不切换到 XML-Configuration-File。

对于 Log4j2,在 cmets 中已经提到过 ThresholdFilter。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多