如何只在日志文件log4j中写入INFO日志?

时间:2016-04-12 10:16:18

标签: java logging log4j

我只想将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框架的默认配置,但我想实现自定义框架,请您帮我解决问题。

1 个答案:

答案 0 :(得分:2)

我刚找到你要找的过滤器: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,有评论中已经提到的ThresholdFilter。