log4j.properties文件 – 同一类中的多个logging器

我想在我的应用程序中有两个不同的log4jlogging器,并且在他们写入他们的尊重日志的内容之间没有“重叠”。

例如:

  • Logger1写入与一组系统事件有关的INFO事件
  • Logger2写入与另一组系统事件有关的INFO事件
  • 日志中不应出现两次

我的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 logger ,这是不可取的。

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

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

解决scheme(取自接受的答案):

 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 

尝试将logging器的可加性设置为false。 这将避免传播到rootLogger。

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