gpt4 book ai didi

java - 不同类的 Log4J 记录器

转载 作者:行者123 更新时间:2023-11-29 03:44:00 25 4
gpt4 key购买 nike

我想使用 Log4J 记录我的 java 项目。我在 src 目录中创建了一个 log4j.properties 文件,内容如下:

# Root logger option
log4j.rootLogger=INFO, file, stdout
log4j.logger.DEFAULT_LOGGER=INFO,file2

# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=file.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d [%t] %-5p %c - %m%n



# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n


log4j.appender.file2=org.apache.log4j.FileAppender
log4j.appender.file2.File=file2.log
log4j.appender.file2.layout=org.apache.log4j.PatternLayout
log4j.appender.file2.layout.ConversionPattern=%d [%t] %-5p %c - %m%n

例如,我只想在我的主要方法中使用“DEFAULT_LOGGER”。所以我写道:

static Logger log = Logger.getLogger("DEFAULT_LOGGER");
log.fatal("Process Logger");

但是当我执行 main 方法时,我将消息“Process Logger”打印到所有 Appender(stdout、file 和 file2),但我只想将它打印到 file2。我该怎么做,或者最好说出我做错了什么?

第二点,当我第二次执行main方法时,并没有覆盖file和file2,只是在textfile里面加了一行。我怎样才能避免这种情况?

最佳答案

Log4j 有一个叫做 additivity 的东西。默认情况下,它设置为 true,这意味着您编写的每个日志不仅会被特定记录器记录,还会被其祖先(在本例中为根记录器)记录。

要将它设置为 false,试试这个:

log4j.additivity.DEFAULT_LOGGER = false

了解更多 here .

关于java - 不同类的 Log4J 记录器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11842494/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com