You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

log4j2-spring.xml日志Pattern配置:异步Appender无法输出类、方法及行号

Log4j2异步Appender无法输出类名、方法名及行号的解决方案

你的问题出在Async Appender默认不会保留日志事件的位置信息,而%class、%M、%L这些Pattern依赖原始调用线程的栈轨迹来获取类名、方法和行号。异步日志在后台线程处理时,原始上下文的栈信息会丢失,导致这些字段无法正常输出。

解决步骤

修改Async Appender的配置,添加includeLocation="true"属性,让异步日志保存原始的位置上下文:

<Async name="Async" includeLocation="true">
    <AppenderRef ref="FileAppender" />
</Async>

原理说明

  • includeLocation属性默认值为false,此时Async Appender不会捕获日志事件的位置信息(类、方法、行号),以此提升异步日志的性能。
  • 设置为true后,Async Appender会在捕获日志事件时保存原始的栈轨迹信息,后续的PatternLayout就能正确解析%class、%M、%L这些占位符。

注意事项

开启includeLocation="true"会带来一定的性能损耗,因为需要额外捕获和存储栈轨迹数据。如果你的系统对日志性能要求极高,需要在日志完整性和性能之间做权衡。

内容的提问来源于stack exchange,提问作者Piyush Srivastava

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 14:12:44