添加多个日志文件

时间:2018-03-06 13:32:47

标签: java log4j

我想使用默认记录器以及只记录我定义的记录器的特定记录器。我通过引用另一个SO question获得了以下内容。

例如:

  1. log.log - 包含所有日志
  2. foo.log - 包含由。定义的日志 foo.info(..)
  3. 我已设置以下属性

    log4j.rootLogger = INFO, FOO, file
    
    log4j.logger.FOO=DEBUG, FOO 
    log4j.logger.file=DEBUG, file 
    
    log4j.additivity.FOO=false 
    log4j.additivity.file=false 
    
    log4j.appender.FOO = org.apache.log4j.RollingFileAppender 
    log4j.appender.FOO.layout = org.apache.log4j.PatternLayout
    log4j.appender.FOO.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
    log4j.appender.FOO.File = foo.log
    
    log4j.appender.file=org.apache.log4j.FileAppender
    log4j.appender.file.File=log.log
    log4j.appender.file.layout=org.apache.log4j.PatternLayout
    log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
    

    我的代码包括以下内容:

    private static final Logger foo = Logger.getLogger("FOO");
    
    private static final Logger log = Logger.getLogger(App.class); //NOTE I can't change this
    
    public static void main(String[] args) { 
        log.info("info");
        foo.info("fooo");
    }
    

    但这与我想要的相反

    log.log只有“info”而foo.log同时拥有。{/ p>

    请注意,我无法更改默认的log实例化代码段。

1 个答案:

答案 0 :(得分:1)

更改您的属性文件,如下所示。 {F}将添加到FOO记录器和根记录器以记录所有消息。 fileAppender只会添加到FOO记录器中,仅记录其消息。为记录器和appender提供不同的名称,有助于理解日志属性文件。

FOOAppender