编程语言
首页 > 编程语言> > JUL(Java.util.Logging)的MDC(映射诊断上下文)支持

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

作者:互联网

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

问题与Slf4j中的一样,虽然它支持MDC java.util.Logging不支持.但它说

If the underlying framework does not offer MDC, for example java.util.logging, then SLF4J will still store MDC data but the information therein will need to be retrieved by custom user code.

我正在尝试找到一种方法来执行此自定义代码.谷歌搜索对我没什么帮助. Slf4j中有一个名为“BasicMDCAdapter”的辅助类.但我不知道如何使用它.我无法在任何地方找到示例代码.

This也是一个帮助这个的代码,但仍然没有给出一些描述.

我很感激这里的帮助.

谢谢.

解决方法:

根据您希望实现的目标,您可以完全避免使用自定义代码.

使用JUL到SLF4J Bridge

这是一个可用的桥,它挂钩到java.util.Logging(JUL)并将所有日志事件转发到SLF4J.使用日志输出允许使用任何SLF4J日志记录实现(例如Logback或Log4j)来为两个日志记录API编写组合日志输出.

使用JUL到SLF4J Bridge,您可以免费获得任何支持它的SLF4J实现的MDC支持.

写一个JUL扩展

如果要保持日志记录系统分离,则需要编写一个JUL扩展,它“读取”MDC并将其值输出到日志中.如果查看SLF4J MDC类,它有一个访问其所有值的方法:org.slf4j.MDC.getCopyOfContextMap().

请记住,默认的JUL处理程序非常有限.因此,我认为你必须实现自己的,然后可以访问MDC.但是,您需要首先检查它们是否在同一个线程中调用.

标签:java,slf4j,java-util-logging,mdc
来源: https://codeday.me/bug/20190517/1122293.html