MDC与SLF4J无法正常工作

6
我们使用SLF4J(带有log4j)作为我们的日志框架。我们试图利用MDC功能,根据在线文档,Log4j支持此功能。
然而,在使用SLF4J时,MDC无法工作。但是,当使用log4j时,它可以完美地工作。文档说明只要基础框架支持MDC,SLF4J就应该支持它。
我们正在使用SLF4J 1.6.4(在我们的pom.xml中添加了slf4j-api、slf4j-log4j12和slf4j-simple作为依赖项)。
是否存在任何差异/不匹配?我们是否缺少任何依赖项?任何建议将不胜感激。

5
你不应该同时导入 slf4j-log4j12slf4j-simple,只需要一个绑定即可。这可能会有问题。 - Tomasz Nurkiewicz
@Tomasz,感谢您的回复。我删除了对slf4j-simple的依赖。然而,这并没有解决问题。正常的日志记录可以工作,但MDC功能无法正常工作。 - gkari
3个回答

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

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

如果底层日志系统提供MDC功能,则SLF4J的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

0
SLF4J肯定支持MDC,并且应该可以直接使用。您使用的是哪个版本的slf4j-api.jar和slf4j-logj12.jar?
在问题的早期版本中,您将slf4j-simple.jar放在了类路径上,这可能是问题的原因。

-1

您添加了 slf4j-simple.jar 作为依赖项,除了 slf4j-log4j12.jar,这表明您对 SLF4J 还不熟悉。您确定 SLF4J 实际上绑定到 log4j 吗?暂且不考虑 MDC,您验证过您的 log4j.properties 配置文件是否被考虑在内了吗?


谢谢您的回复。是的,log4jproperties配置文件已经被考虑在内了,正常的日志记录工作得非常好。 - gkari

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接