log4j:如何指定指定默认的MDC值?

时间:2017-03-25 13:54:24

标签: java log4j

我有一个带有多个"模块的Java程序"每个都有自己的线程集。我希望能够从特定模块grep日志,所以我希望每个模块日志以" [moduleId]"开始。

我尝试过使用log4j和以下配置:

log4j.rootLogger=i, stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.stdout.Target=System.out

log4j.appender.stdout.layout.ConversionPattern=[%X{moduleId}] %d{yyyy-MM-dd HH:mm:ss} %5p %c{1}:%L %t - %m%n

并使用

MDC.put("moduleId", "module1");

在每个模块线程中。

这工作正常,但我有代码负责管理模块,我很难使用MDC.put()和那些线程日志开始于 []因为MDC变量" moduleId"没有定义。

是否可以使用log4j(或其他java记录器)为" moduleId"指定默认值。变量?

这样代码

logger.info("1");
MDC.put("moduleId", "module1");
logger.info("2");

日志

[system] ... 1
[module1] ... 2

而不是

[] ... 1
[module1] ... 2 

还有一种方法,多行日志(例如堆栈跟踪)的所有行都以[moduleId]开头,而不仅仅是第一行吗?

0 个答案:

没有答案