log4j.properties文件 - 在同一个类中的多个记录器(log4j.properties

2019-06-25 20:19发布

我想有两个不同的log4j记录器在我的应用程序,并为那里是他们写信给他们的尊重日志的内容之间不存在“重叠”。

例如:

  • Logger1写入有关一组系统事件的信息事件
  • Logger2写入相关的另一套系统事件的信息事件
  • 无条目应该出现在日志中两次

我log4j.properties如下:

log4j.rootLogger=DEBUG, stdout
log4j.logger.org.apache=DEBUG, stdout
log4j.logger.xdasLogger=DEBUG, xdas

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%m%n

log4j.appender.xdas=org.apache.log4j.ConsoleAppender
log4j.appender.xdas.layout=org.apache.log4j.PatternLayout
log4j.appender.xdas.layout.ConversionPattern=%d %-5p %c - %m%n

我的Java代码如下:

public static void main(String[] args) {
    PropertyConfigurator.configure(Client.class
            .getResource("/log4j.properties"));
    xdasLogger = Logger.getLogger("xdasLogger");
    logger = Logger.getLogger(Client.class);

    logger.info("normal");
    xdasLogger.info("xdas");
}

但我的控制台输出如下:

normal
2012-06-28 09:52:44,580 INFO  xdasLogger - xdas
xdas

请注意,“XDAS”由两个记录loggerxdasLogger ,这是不可取的。

有谁知道什么样的变化,我需要把我的log4j.properties更改控制台输出到下面?

normal
2012-06-28 09:52:44,580 INFO  xdasLogger - xdas

解决方案(从接受回答):

log4j.rootLogger=DEBUG, stdout
log4j.logger.org.apache=DEBUG, stdout
log4j.logger.xdasLogger=DEBUG, xdas

log4j.additivity.org.apache=false
log4j.additivity.xdasLogger=false

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%m%n

log4j.appender.xdas=org.apache.log4j.ConsoleAppender
log4j.appender.xdas.layout=org.apache.log4j.PatternLayout
log4j.appender.xdas.layout.ConversionPattern=%d %-5p %c - %m%n

Answer 1:

尝试记录器的加设置为false。 这将避免传播到rootLogger。

log4j.additivity.org.apache=false
log4j.additivity.xdasLogger=false


文章来源: log4j.properties file - multiple loggers in same class