Java 添加多个日志文件

Java 添加多个日志文件,java,log4j,Java,Log4j,我想使用一个默认记录器以及一个只记录我定义的记录器的特定记录器。我是通过参考另一篇文章得出以下结论的 例如: log.log-包括所有日志 foo.log-包括由定义的日志 foo.info(…) 我已经设置了以下属性 log4j.rootLogger = INFO, FOO, file log4j.logger.FOO=DEBUG, FOO log4j.logger.file=DEBUG, file log4j.additivity.FOO=false log4j.additivit

我想使用一个默认记录器以及一个只记录我定义的记录器的特定记录器。我是通过参考另一篇文章得出以下结论的

例如:

  • log.log-包括所有日志
  • foo.log-包括由定义的日志
    foo.info(…)
  • 我已经设置了以下属性

    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
    两者都有


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

    更改属性文件,如下所示
    fileAppender
    将添加到FOO logger和root logger中,以记录所有消息
    FOOAppender
    将仅添加到FOO logger,以仅记录其消息。为记录器和附加器指定不同的名称,有助于理解日志属性文件

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

    以上方法有效,谢谢。日志没有类名(因为记录器是作为
    getLogger(“Foo”)
    启动的)。如果我要将类名添加到日志中,我是否需要在日志记录时显式传递它,或者是否有方法将其添加到属性文件中?@SachiDangalla您可能已经知道,%c参数将采用您传递给getLogger方法的名称。如果您必须传递“Foo”文本,并且仍然希望在日志上打印当前类名,那么我知道的唯一方法就是像您所说的传递expility。