我有一个带有多个“模块”的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
Run Code Online (Sandbox Code Playgroud)
并使用
MDC.put("moduleId", "module1");
Run Code Online (Sandbox Code Playgroud)
在每个模块线程中。
这工作正常,但我有负责管理模块的代码,我很难使用 MDC.put() 并且这些线程日志以 [] 开头,因为 MDC 变量“moduleId”未定义。
是否可以使用 log4j (或其他 java 记录器)为“moduleId”变量指定默认值?
这样代码
logger.info("1");
MDC.put("moduleId", "module1");
logger.info("2");
Run Code Online (Sandbox Code Playgroud)
日志
[system] ... 1
[module1] ... 2
Run Code Online (Sandbox Code Playgroud)
代替
[] ... 1
[module1] ... 2
Run Code Online (Sandbox Code Playgroud)
还有一种方法可以让多行日志(例如堆栈跟踪)的所有行都以 [moduleId] 开头,而不仅仅是第一行?
| 归档时间: |
|
| 查看次数: |
588 次 |
| 最近记录: |