【问题标题】:MDC not working with SLF4JMDC 不适用于 SLF4J
【发布时间】:2012-01-19 20:45:16
【问题描述】:

我们使用 SLF4J(带有 log4j)作为我们的日志框架。我们正在尝试利用 Log4j 支持的在线文档的 MDC 功能。

使用 SLF4J 时,MDC 不起作用。但是,当使用 log4j 时,它工作得非常好。文档说明只要底层框架支持 MDC,SLF4J 就应该支持。

我们使用的是 SLF4J 1.6.4(slf4j-apislf4j-log4j12slf4j-simple 已作为依赖项添加到我们的 pom.xml 中)。

某处是否存在差异/不匹配?我们是否缺少任何依赖项?任何意见将不胜感激。

【问题讨论】:

  • 您不应该同时导入slf4j-log4j12slf4j-simple,只需要一个绑定。这可能是个问题。
  • @Tomasz,感谢您的回复。我删除了对 slf4j-simple 的依赖。但是,这并没有解决问题。正常的日志记录有效,但 MDC 功能无效。

标签: logging slf4j mdc


【解决方案1】:

除了 slf4j-log4j12.jar 之外,您还添加了 slf4j-simple.jar 作为依赖项,这表明您对 SLF4J 还不熟悉。你确定你确定 SLF4J 实际上是绑定到 log4j 的吗?撇开 MDC 不谈,您是否确认您的 log4j.properties 配置文件已被考虑在内?

【讨论】:

  • 感谢您的回复。是的,log4jproperties 配置文件被考虑在内,正常的日志记录工作得很好。
【解决方案2】:

根据 SLF4J 的 MDC javadoc,该类使用 NOPMDCAdapter,一个空的实现,用于 slf4j-simple:

https://www.slf4j.org/api/org/slf4j/MDC.html

如果底层日志系统提供 MDC 功能,那么 SL​​F4J 的 MDC,即这个类,将委托给底层系统的 MDC。请注意,目前只有两个日志系统,即 log4j 和 logback,提供 MDC 功能。对于不支持 MDC 的 java.util.logging,将使用 BasicMDCAdapter。对于其他系统,即 slf4j-simple 和 slf4j-nop,将使用 NOPMDCAdapter。

对于 NOPMDCAdapter 文档:https://www.slf4j.org/api/org/slf4j/helpers/NOPMDCAdapter.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-27
    • 2019-01-15
    相关资源
    最近更新 更多