Wiz*_*ard 6 java log4j slf4j mdc
我使用 slf4j 登录我的项目。我想使用 MDC 来记录用户 ID 参数。所以我检查教程和文档,并编写如下代码:
MDC.put("key", userId)
Run Code Online (Sandbox Code Playgroud)
userId实际上是一个字符串。
我使用常用的 log4j xml 和附加程序等属性。在那里添加 %X{key} 但没有任何反应。我根本没有看到任何东西可以代替 %X{key},但其他参数如 %-5p 或 %c 效果很好。
所以我使用 debug 来观察 MDC.put() 方法中发生的情况,并发现在 MDC 的初始化中使用了:
MDCAdapter mdcAdapter;
mdcAdapter = StaticMDCBinder.SINGLETON.getMDCA();
Run Code Online (Sandbox Code Playgroud)
IDEA 中的调试显示它具有“Log4jMDCAdapter”,类似于 MDCAdapter 的实现之一。但后来我查看 StaticMDCBinder,有如下代码:
public MDCAdapter getMDCA() {
return new NOPMDCAdapter();
}
Run Code Online (Sandbox Code Playgroud)
那么 slf4j 如何使用适当的适配器(例如 log4j)初始化 MDC ???我没明白。因为它始终使用 NOPMDCAdapter,所以它无法在 MDC 中存储任何内容,也无法在日志记录中显示它。我该如何修复它?
在类路径中我有:
| 归档时间: |
|
| 查看次数: |
2051 次 |
| 最近记录: |