我最近更新到了log4j 2(通过log4j-1.2-api桥),在此迁移之后,通过MDC传递的一些数据以及之前运行良好的日志的一些行消失了,这些行来自同一类中定义的另一个记录器。我想知道为什么只有一个记录器会发生这种情况,而另一个记录器不会,而且这种情况是随机发生的,这意味着在某些情况下,同一个记录器拥有MDC数据,而在其他一些情况下,则没有。
0s0u357o1#
如果有人遇到同样的问题,这是因为log4j桥在后台使用ThreadContext来重定向MDC调用,并且在log4j2中默认情况下不激活线程继承,因此要激活它,您可以添加一个log4j2.component.properties文件,并向其中添加以下条目:
log4j2.isThreadContextMapInheritable=true
1条答案
按热度按时间0s0u357o1#
如果有人遇到同样的问题,这是因为log4j桥在后台使用ThreadContext来重定向MDC调用,并且在log4j2中默认情况下不激活线程继承,因此要激活它,您可以添加一个log4j2.component.properties文件,并向其中添加以下条目: