处理Log4j2不能打印行号的问题(AsyncLogger)
Log4j2不能打印行号问题(AsyncLogger)
背景
%d{yyyy-MM-dd HH:mm:ss,SSS} %level [%t] %logger{36}(%F:%L) - %m%n
日志的输出格式已经指定了文件名、行号显示,可是打印出来却是空的,为什么?答案在这里:
解决方案
pom.xml
<dependency>
<groupId>com.lmax</groupId>
<artifactId>disruptor</artifactId>
<version>3.3.11</version>
</dependency>
log4j2.xml
<AsyncLogger name="com.domain.app.web" includeLocation="true">
<AppenderRef ref="File" />
</AsyncLogger>
注意
includeLocation:设置成true,否则指定了行号也显示不出来;disruptor:这个包需要单独引入;additivity:设置成false,否则会重复;
附完整配置节点
<AsyncLogger name="com.domain.app.web" includeLocation="true" level="debug" additivity="false">
<AppenderRef ref="File" />
</AsyncLogger>
<appender name="STD" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%date{yyyy-MM-dd HH:mm:ss} %highlight(%-5level) [%boldYellow(%thread)] %boldGreen(%logger)(%F:%L\): %msg%n</pattern>
</encoder>
</appender>
Log4j2异步日志中打印方法名和行号信息
解决方案
异步logger,还需要在pom.xml中添加disruptor的依赖;
includeLocation结合异步logger使用,当其设置为true时,才会显示具体的行号,以及日志所在的类名;
如果设置为false,哪怕<Pattern>设置了输出行号也不会显示出来;
pom配置
<dependency>
<groupId>com.lmax</groupId>
<artifactId>disruptor</artifactId>
<version>3.3.6</version>
</dependency>
属性配置
设置 AsyncRoot 的 includeLocation 属性为 true;
xml 格式示例:
<AsyncRoot level="info" includeLocation="true">
<AppenderRef ref="File"/>
</AsyncRoot>
yaml 格式示例:
Loggers:
AsyncRoot:
level: info
includeLocation: true
AppenderRef:
- ref: console
- ref: running_log
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Springboot下swagger-ui.html访问不到的解决方案
这篇文章主要介绍了Springboot下swagger-ui.html访问不到的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-10-10
Springboot+Shiro记录用户登录信息并获取当前登录用户信息的实现代码
这篇文章主要介绍了Springboot+Shiro记录用户登录信息,并获取当前登录用户信息,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-05-05
浅谈spring中的default-lazy-init参数和lazy-init
下面小编就为大家带来一篇浅谈spring中的default-lazy-init参数和lazy-init。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧2017-04-04
基于<aop:aspect>与<aop:advisor>的区别
这篇文章主要介绍了<aop:aspect>与<aop:advisor>的区别,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-11-11
Java SimpleDateFormat与System类使用示例详解
这篇文章主要介绍了Java SimpleDateFormat与System类使用示例,对于SimpleDateFormat类,是一个用来区分区域设置的方式进行日期的是指,以及对日期进行处理分析的一个实现类2022-11-11


最新评论