ThreadContext.put() 和 MDC.Put() 有什么区别?

Rat*_*mar 13 java spring log4j thread-safety log4j2

我只是想知道 threadContext.put 和 MDC.put 之间的区别。因为,我相信两者都在执行相同的操作。

Sau*_*ngh 9

Log4j 2 延续了MDCNDC的思想,但将它们合并到单个线程上下文中。线程上下文映射相当于 MDC,线程上下文堆栈相当于 NDC。尽管它们经常用于诊断问题以外的目的,但它们在 Log4j 2 中仍然经常被称为MDCNDC ,因为它们已经通过这些缩写词而众所周知。

https://logging.apache.org/log4j/2.x/manual/thread-context.html

  • 是的。根据代码MDC只是ThreadContext之上的一层 - https://github.com/apache/logging-log4j2/blob/master/log4j-1.2-api/src/main/java/org/apache/log4j/MDC。爪哇 (2认同)

D.B*_*.B. 5

根据log4j2 手册

org.apache.log4j.MDC 和 org.apache.log4j.NDC 已被线程上下文取代。