如何将MDC与playframework一起用于java

时间:2017-10-18 04:41:55

标签: java logging playframework slf4j

  1. MDC并不总是在playframework中工作,因为函数是在托管线程池中执行的。
  2. 在这种情况下,建议在将任务提交给执行程序之前,在原始(主)线程上调用MDC.getCopyOfContextMap()。
  3. 但是线程池是由playframework管理的,我不能在原始线程上调用MAC.getCopyOfContextMap()。
  4. java有一些解决方案吗?或者我可以为MDC添加一个方面,因为我可以从上下文中手动获取数据,以及如何操作?感谢

1 个答案:

答案 0 :(得分:2)

对于Playframework有一个open bug。该错误报告仅涉及Scala,但同样的问题也影响Java,因为它是由MDC线程本地引起的,但在Play中,单个请求可以分解为多个子调用,每个子调用可以在不同的线程上运行MDC没有传播到所有这些线程。

这里提出了一些解决方案:

或者,您需要等到the bug修复或接受MDC不会按照您期望的方式运行。