某些记录器未打印 log4j2 MDC 数据

log4j2 MDC data is not being printed for some loggers

我最近更新到 log4j2(通过 log4j-1.2-api 桥),在这次迁移之后,一些通过 MDC 传递并且之前工作正常的数据在日志的某些行中消失了,这些行来自另一个在同一个 class 中定义的记录器。我想知道这是如何发生在一个记录器而不是另一个记录器上的,并且这是以随机方式发生的,这意味着在某些情况下,同一个记录器具有 MDC 数据,而在其他一些情况下却没有。

如果有人遇到同样的问题,这是因为 log4j 桥在后台使用 ThreadContext 来重定向 MDC 调用,并且线程继承在 log4j2 中默认未激活,因此要使其激活,您可以添加 log4j2.component.properties 文件并向其中添加此条目:

log4j2.isThreadContextMapInheritable=true