處理Log4j2不能打印行號的問題(AsyncLogger)
Log4j2不能打印行號問題(AsyncLogger)
背景
%d{yyyy-MM-dd HH:mm:ss,SSS} %level [%t] %logger{36}(%F:%L) - %m%n
日志的輸出格式已經(jīng)指定了文件名、行號顯示,可是打印出來卻是空的,為什么?答案在這里:
解決方案
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
:設(shè)置成true,否則指定了行號也顯示不出來;disruptor
:這個(gè)包需要單獨(dú)引入;additivity
:設(shè)置成false,否則會(huì)重復(fù);
附完整配置節(jié)點(diǎn)
<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結(jié)合異步logger使用,當(dāng)其設(shè)置為true時(shí),才會(huì)顯示具體的行號,以及日志所在的類名;
如果設(shè)置為false,哪怕<Pattern>設(shè)置了輸出行號也不會(huì)顯示出來;
pom配置
<dependency> <groupId>com.lmax</groupId> <artifactId>disruptor</artifactId> <version>3.3.6</version> </dependency>
屬性配置
設(shè)置 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
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring Cloud Feign 自定義配置(重試、攔截與錯(cuò)誤碼處理) 代碼實(shí)踐
這篇文章主要介紹了Spring Cloud Feign 自定義配置(重試、攔截與錯(cuò)誤碼處理) 實(shí)踐,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08Java Swing組件單選框JRadioButton用法示例
這篇文章主要介紹了Java Swing組件單選框JRadioButton用法,結(jié)合具體實(shí)例形式分析了Swing單選框JRadioButton的使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2017-11-11SpringBoot打印系統(tǒng)執(zhí)行的sql語句及日志配置指南
這篇文章主要給大家介紹了關(guān)于SpringBoot打印系統(tǒng)執(zhí)行的sql語句及日志配置的相關(guān)資料,在Java SpringBoot項(xiàng)目中如果使用了Mybatis框架,默認(rèn)情況下執(zhí)行的所有SQL操作都不會(huì)打印日志,需要的朋友可以參考下2023-10-10Springboot中實(shí)現(xiàn)接口冪等性的4種方案小結(jié)
本文主要介紹了Springboot中實(shí)現(xiàn)接口冪等性,包含數(shù)據(jù)庫的冪等,數(shù)據(jù)庫的冪等,Redis的冪等性和Token + 時(shí)間戳的冪等性,具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03Java使用Jsoup解析html網(wǎng)頁的實(shí)現(xiàn)步驟
Jsoup是一個(gè)用于解析HTML文檔的Java庫,本文主要介紹了Java使用Jsoup解析html網(wǎng)頁的實(shí)現(xiàn)步驟,可以提取文本、鏈接、圖片等,具有一定的參考價(jià)值,感興趣的可以了解一下2024-02-02