Log4j2与SLF4J MDC兼容问题:Finatra中traceID日志无法输出
问题:Finatra集成Log4J2时TraceID日志缺失
我在使用Finatra框架时尝试开启traceID日志,但Log4J2的输出中始终没有相关内容。
Finatra支持SLF4J MDC,SLF4J MDC理论上兼容Log4J(包括Log4J2),Log4J2本身也支持MDC和SLF4J,但实际日志构建时,MDC数据始终为空。
测试用Logback作为日志实现时,MDC日志可以正常输出(它依赖SLF4J MDC),但我必须使用Log4J2,无法更换日志实现。
解决办法
问题根源在于Finatra的LoggingMDCFilter会将MDCAdapter替换为基于Finagle Contexts实现的自定义FinagleMDCAdapter,这个自定义实现和Log4J2的MDC机制不兼容,导致TraceID无法正常输出。
只需移除LoggingMDCFilter,即可让Log4J2正常读取SLF4J MDC中的TraceID数据。
内容的提问来源于stack exchange,提问作者brisssou
相关产品推荐
相关产品推荐

