SpringBoot將logback替換成log4j2的操作步驟
一 為何要替換成log4j2
1.1 log4j2的優(yōu)點
log4j2使用了兩種方式記錄日志:AsyncAppender和AsyncLogger。
1.AsyncAppender使用隊列異步記錄日志,但是一旦隊列已滿,appender線程需要等待。
2.AsyncLogger是采用Disruptor,通過環(huán)形隊列無阻塞隊列作為緩沖,多生產(chǎn)者多線程的競爭是通過CAS實現(xiàn),無鎖化實現(xiàn),可以降低極端大的日志量時候的延遲尖峰,Disruptor 可是號稱一個線程里每秒處理600萬訂單的高性能隊列。
注意的是: 使用AsyncLogger才會使用disruptor提高性能。如果使用的AsyncAppender,則使用的是類似logback一樣的隊列的方式做異步記錄。
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)聽器的啟動順序需要在日志配置監(jiān)聽器的前面,所以此處減 1
return LoggingApplicationListener.DEFAULT_ORDER - 1;
}3.在 /src/main/resources/META-INF/spring.factories進行加載監(jiān)聽器
org.springframework.context.ApplicationListener=com.longze.patcher.listener.MyLoggerListener
4.log4j2.xml進行使用配置是路徑

1.3 log4j&slf4j&log4j2需要的導(dǎo)入的包
Log4j實例:
import org.apache.log4j.Logger; private static final Logger LOGGER = Logger.getLogger(X.class);
Slf4j實例:
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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring注解配置AOP導(dǎo)致通知執(zhí)行順序紊亂解決方案
這篇文章主要介紹了Spring注解配置AOP導(dǎo)致通知執(zhí)行順序紊亂解決方案,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-10-10
Spring Security攔截器引起Java CORS跨域失敗的問題及解決
這篇文章主要介紹了Spring Security攔截器引起Java CORS跨域失敗的問題及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-07-07
淺談Java之Map 按值排序 (Map sort by value)
下面小編就為大家?guī)硪黄獪\談Java之Map 按值排序 (Map sort by value)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-08-08
Java 動態(tài)數(shù)組的實現(xiàn)示例
Java動態(tài)數(shù)組是一種可以任意伸縮數(shù)組長度的對象,本文主要介紹了Java 動態(tài)數(shù)組的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-08-08

