添加多个日志文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了添加多个日志文件相关的知识,希望对你有一定的参考价值。

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

例如:

  1. log.log - 包括所有日志
  2. 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只有“信息”,而foo.log有两个。

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

答案

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

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

以上是关于添加多个日志文件的主要内容,如果未能解决你的问题,请参考以下文章

我的Android进阶之旅NDK开发之在C++代码中使用Android Log打印日志,打印出C++的函数耗时以及代码片段耗时详情

php添加日志文件

添加多个日志文件

在单个片段事务中添加多个返回堆栈条目

Alfred常见使用

Android:以编程方式在片段中添加多个 RecyclerView