SpringBoot將logback替換成log4j2的操作步驟
一 為何要替換成log4j2
1.1 log4j2的優(yōu)點(diǎn)
log4j2使用了兩種方式記錄日志:AsyncAppender和AsyncLogger。
1.AsyncAppender使用隊(duì)列異步記錄日志,但是一旦隊(duì)列已滿,appender線程需要等待。
2.AsyncLogger是采用Disruptor,通過(guò)環(huán)形隊(duì)列無(wú)阻塞隊(duì)列作為緩沖,多生產(chǎn)者多線程的競(jìng)爭(zhēng)是通過(guò)CAS實(shí)現(xiàn),無(wú)鎖化實(shí)現(xiàn),可以降低極端大的日志量時(shí)候的延遲尖峰,Disruptor 可是號(hào)稱一個(gè)線程里每秒處理600萬(wàn)訂單的高性能隊(duì)列。
注意的是: 使用AsyncLogger才會(huì)使用disruptor提高性能。如果使用的AsyncAppender,則使用的是類似logback一樣的隊(duì)列的方式做異步記錄。
1.2 log4j2.xml如何讀取application.yml中屬性值
1.2.1 操作步驟
1.在application.properties 或者application.yml文件中配置
patcher.log=/data350/fengqxLogFile/patcher
2.編寫監(jiān)聽器
@Component public class LoggerListener implements ApplicationListener<ApplicationEvent>, Ordered { @Override public void onApplicationEvent(ApplicationEvent applicationEvent) { if (applicationEvent instanceof ApplicationEnvironmentPreparedEvent) { ConfigurableEnvironment environment = ((ApplicationEnvironmentPreparedEvent) applicationEvent).getEnvironment(); String filePath = environment.getProperty("patcher.log"); if (StringUtils.isNotEmpty(filePath)) { System.err.println("=================" + filePath); System.setProperty("patcher.log", filePath); } } } @Override public int getOrder() { // 當(dāng)前監(jiān)聽器的啟動(dòng)順序需要在日志配置監(jiān)聽器的前面,所以此處減 1 return LoggingApplicationListener.DEFAULT_ORDER - 1; }
3.在 /src/main/resources/META-INF/spring.factories進(jìn)行加載監(jiān)聽器
org.springframework.context.ApplicationListener=com.longze.patcher.listener.MyLoggerListener
4.log4j2.xml進(jìn)行使用配置是路徑
1.3 log4j&slf4j&log4j2需要的導(dǎo)入的包
Log4j實(shí)例:
import org.apache.log4j.Logger; private static final Logger LOGGER = Logger.getLogger(X.class);
Slf4j實(shí)例:
import org.slf4j.Logger; import org.slf4j.LoggerFactory; private static final Logger logger = LoggerFactory.getLogger(X.class);
Log4j2的使用:
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; private static final Logger logger = LogManager.getLogger(X.class);
1.4 整合log4j2需要引入的依賴與排除依賴
1.引入依賴
<dependencies> <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-slf4j-impl --> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-slf4j-impl</artifactId> <version>2.17.1</version> <scope>test</scope> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api --> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.17.1</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core --> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.17.1</version> </dependency> <dependency> <groupId>com.Imax</groupId> <artifactId>disruptor</artifactId> <version>2.17.1</version> </dependency> </dependencies>
排除jar包:
到此這篇關(guān)于SpringBoot將logback替換成log4j2的操作步驟的文章就介紹到這了,更多相關(guān)SpringBoot logback替換成log4j2內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解openfeign集成spring?cloud?loadbalancer實(shí)現(xiàn)負(fù)載均衡流程
這篇文章主要介紹了openfeign集成spring?cloud?loadbalancer實(shí)現(xiàn)負(fù)載均衡流程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07Java中LinkedList數(shù)據(jù)結(jié)構(gòu)的詳細(xì)介紹
這篇文章主要介紹了Java中LinkedList,Linked List 是 java.util 包中 Collection 框架的一部分,文中提供了詳細(xì)的代碼說(shuō)明,需要的朋友可以參考下2023-05-05Springmvc RequestMapping請(qǐng)求實(shí)現(xiàn)方法解析
這篇文章主要介紹了Springmvc RequestMapping請(qǐng)求實(shí)現(xiàn)方法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09Java 靜態(tài)綁定與動(dòng)態(tài)綁定深入分析
這篇文章主要介紹了Java 靜態(tài)綁定與動(dòng)態(tài)綁定深入分析的相關(guān)資料,這里對(duì)java 的動(dòng)態(tài)綁定和靜態(tài)綁定做了詳細(xì)的介紹,對(duì)其進(jìn)行總結(jié)整理,需要的朋友可以參考下2016-11-11Java實(shí)現(xiàn)學(xué)生管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)學(xué)生管理系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01maven私有鏡像倉(cāng)庫(kù)nexus部署使用
Nexus在企業(yè)開發(fā)中還是比較常用的私有倉(cāng)庫(kù)管理工具,本文主要介紹了maven私有鏡像倉(cāng)庫(kù)nexus部署使用,具有一定的參考價(jià)值,感興趣的可以了解一下2024-07-07Springboot中整合knife4j接口文檔的過(guò)程詳解
knife4j就swagger的升級(jí)版API文檔的一個(gè)框架,但是用起來(lái)比swagger方便多了,UI更加豐富,這篇文章主要介紹了Springboot中整合knife4j接口文檔,需要的朋友可以參考下2022-04-04高并發(fā)環(huán)境下安全修改同一行數(shù)據(jù)庫(kù)數(shù)據(jù)的策略分享
隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,越來(lái)越多的應(yīng)用需要在高并發(fā)環(huán)境中運(yùn)行,數(shù)據(jù)庫(kù)的并發(fā)控制成為了業(yè)務(wù)的關(guān)鍵,本文將介紹如何在高并發(fā)情況下,安全地修改數(shù)據(jù)庫(kù)中的同一行數(shù)據(jù),需要的可以參考一下2023-06-06