【问题标题】:Alternatives to SLF4J MDCSLF4J 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 中的内容之外,您还有其他提示吗?

标签: java slf4j


【解决方案1】:

在 try-finally 块中使用 remove(..) 清除 MDC put(..)

MDC.put("system", "fedora");
try {
    // your code here
} finally {
    MDC.remove("system");
}

这样在您的代码运行后不会保留任何状态。

【讨论】:

    猜你喜欢
    • 2014-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多