SLF4J MDC 的替代品
Posted
技术标签:
【中文标题】SLF4J MDC 的替代品【英文标题】:Alternatives to SLF4J MDC 【发布时间】:2018-04-15 16:29:10 【问题描述】:我正在尝试在我的 JSF 应用程序中记录启动每个请求的用户名,但显然是 MDC on a web app server (thread pool) is risky。
我已经看到 MDC 在使用 EJB @Asynchronous 调用时泄漏到一个新调用中,这是我没有预料到的。
有哪些选择?我宁愿不必依赖记住将用户名放在每个日志调用上。我要包装 slf4j 吗?
【问题讨论】:
这完全没有风险——至少没有运行 Web 服务器的风险——只要做对就行。同样,很像运行 Web 服务器。 感谢@BoristheSpider 的回复,您有任何正确操作的链接吗?除了logback.qos.ch/manual/mdc.html 中的内容之外,您还有其他提示吗? 【参考方案1】:在 try-finally 块中使用 remove(..) 清除 MDC put(..)
MDC.put("system", "fedora");
try
// your code here
finally
MDC.remove("system");
这样在您的代码运行后不会保留任何状态。
【讨论】:
以上是关于SLF4J MDC 的替代品的主要内容,如果未能解决你的问题,请参考以下文章