log4j2的位置参数’%L’ ‘%M’ ‘%l’不生效

7月 19, 2021 |

log4j2使用通过异步logger来提高吞吐量,如果通过

-DLog4jContextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector
或者
log4j2.component.properties文件中添加
Log4jContextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector激活异步logger,
那么就默认开启了异步logger,默认是不支持位置参数的,因为获取位置参数非常耗费性能,特别是异步执行需要将一个线程的堆栈信息传递给另一个线程。

如果你需要在异步logger环境下记录位置参数,可以对logger添加includeLocation 属性,比如

<Root level="INFO" includeLocation="true">

如果是测试环境,那么直接禁用掉Log4jContextSelector参数对异步上下文的选择就好了

Posted in: Uncategorized

Comments are closed.