MDC(映射诊断上下文)支持JUL(Java.util.Logging)



我使用Slf4j和java.util.Logging设置了一个日志机制。我有几个线程,所以我无法从日志中得到一个清晰的想法,因为它们是混合的。现在,我尝试使用MDC概念在日志文件中添加更多数据,以便它们更清晰。

问题是在Slf4j虽然它支持MDC java.util.Logging不。但是上面写着

如果底层框架不提供MDC,例如java.util。,那么SLF4J仍然会存储MDC数据,但是其中的信息需要由自定义用户代码检索。

我正试图找到一种方法来做这个自定义代码。谷歌对我帮助不大。在Slf4j中有一个名为"BasicMDCAdapter"的助手类。但我不知道怎么用。我找不到一个示例代码。

这也是一个代码来帮助解决这个问题,但仍然没有给出一点描述。

我很感激这里有人的帮助。

谢谢。

根据您想要实现的目标,您可能完全可以避免自定义代码。

使用JUL到SLF4J桥

是一个连接java.util.Logging (JUL)并将所有日志事件转发给SLF4J的可用桥接。使用日志输出允许使用任何SLF4J日志记录实现(如Logback或Log4j)为两个日志api编写合并的日志输出。

使用JUL到SLF4J桥接,您将获得MDC免费支持,任何SLF4J实现都支持它。

写一个JUL扩展

如果你想保持日志系统的分离,那么你需要写一个JUL扩展,它"读取"MDC并将其值输出到日志中。如果您查看SLF4J MDC类,它有一个访问其所有值的方法:org.slf4j.MDC.getCopyOfContextMap() .

请记住,默认的JUL处理程序非常有限。因此,我认为您必须实现自己的程序,然后才能访问MDC。但是,您需要首先检查它们是从同一线程内调用的。

相关内容

最新更新