簡體   English   中英

log4j.properties文件 - 同一個類中的多個記錄器

[英]log4j.properties file - multiple loggers in same class

我希望在我的應用程序中有兩個不同的log4j記錄器,並且在他們寫入尊重日志的內容之間沒有“重疊”。

例如:

  • 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

請注意, loggerxdasLogger都會logger “xdas”,這是不可取的。

有誰知道我需要將哪些更改放入我的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

嘗試將記錄器的可加性設置為false。 這將避免傳播到rootLogger。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM