gpt4 book ai didi

java - 如何将 log4j 转换模式应用于特定包?

转载 作者:行者123 更新时间:2023-12-04 10:03:10 24 4
gpt4 key购买 nike

我想向源自特定包中的类的所有日志添加一个 ID - com.example.package。

为了实现这一点,我使用了映射诊断上下文 (MDC) 和 log4j 的布局转换模式。

在代码中,我通过 MDC.put("correlation.id", id); 设置了 ID

然后,我创建了一个 log4j.properties 文件,内容如下:

log4j.rootLogger=WARN,myappender

log4j.appender.myappender=org.apache.log4j.ConsoleAppender
log4j.logger.com.example.package=INFO,myappender
log4j.additivity.com.example.package=false

log4j.appender.myappender.layout=org.apache.log4j.PatternLayout
log4j.appender.myappender.layout.ConversionPattern=<%-4p> %d{yyyy-MMM-dd::HH:mm:ss,SSS} %C{1} %t: - %m - correlation.id=%X{correlation.id}%n

这适用于特定的包。但是,以前在 INFO 级别记录的一些包不再出现。我相信第一行是将级别设置为全局 WARN。默认情况下,一些包在 WARN 上,而其他包在 INFO 上,所以我不想设置全局级别。我尝试删除该行,但没有它我会收到此错误:
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

最后,我不想影响全局日志记录,我真的只想将该转换模式应用于该特定包,并保留其他所有内容与创建 log4j.properties 文件之前一样。

这可能吗?

最佳答案

您可以在 log4j 中定义多个 appender,因此您可以使用这样的默认 appender:

log4j.rootLogger=INFO, myDefaultAppender

所有包裹

以及其他一些包的附加附加程序,如下所示:
log4j.logger.com.example.package1=WARN, myEmailAppender, myFileAppender
log4j.logger.com.example.package2=DEBUG, myFileAppender

关于java - 如何将 log4j 转换模式应用于特定包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61731244/

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