通过 log4j-1.2-api 桥切换到 log4j2 后,我注意到某些日志行中丢失了 MDC 数据。这些行来自同一类中的单独记录器。令人费解的是,这种情况是随机发生的——有时 MDC 数据出现,有时则不出现。关于为什么会发生这种不一致的任何想法?
如果有人遇到同样的问题,这是因为 log4j 桥在后台使用 ThreadContext 来重定向 MDC 调用,并且 log4j2 中默认情况下不会激活线程继承,因此要使其激活,您可以添加一个 log4j2.component。 properties 文件并将此条目添加到其中:
log4j2.isThreadContextMapInheritable=true