最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot將logback替換成log4j2的操作步驟

 更新時間:2024年10月15日 10:31:10   作者:健康平安的活著  
文章介紹了如何在SpringBoot項目中將默認的日志框架logback替換為log4j2,以利用log4j2的高性能異步日志記錄特性,特別是通過Disruptor實現(xiàn)的無鎖化隊列,提高了日志處理速度,同時,文章提供了詳細的配置步驟,需要的朋友可以參考下

一 為何要替換成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)文章

  • Mybatis之RowBounds分頁原理詳解

    Mybatis之RowBounds分頁原理詳解

    這篇文章主要介紹了Mybatis之RowBounds分頁原理詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • Spring注解配置AOP導(dǎo)致通知執(zhí)行順序紊亂解決方案

    Spring注解配置AOP導(dǎo)致通知執(zhí)行順序紊亂解決方案

    這篇文章主要介紹了Spring注解配置AOP導(dǎo)致通知執(zhí)行順序紊亂解決方案,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-10-10
  • spring中時間格式化的兩種方法示例講解

    spring中時間格式化的兩種方法示例講解

    這篇文章主要介紹了spring中時間格式化的兩種方法,方法一自己格式化,方法二通過配置,結(jié)合實例代碼講解的非常詳細,文中補充介紹了Spring項目中時間格式化的方法,需要的朋友可以參考下
    2023-08-08
  • Spring Security攔截器引起Java CORS跨域失敗的問題及解決

    Spring Security攔截器引起Java CORS跨域失敗的問題及解決

    這篇文章主要介紹了Spring Security攔截器引起Java CORS跨域失敗的問題及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java中Switch用法代碼示例

    Java中Switch用法代碼示例

    這篇文章主要介紹了Java中Switch用法代碼示例,向大家分享了兩段代碼,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • SpringBoot實現(xiàn)操作日志記錄的完整指南

    SpringBoot實現(xiàn)操作日志記錄的完整指南

    在SpringBoot項目中,若將日志記錄代碼散亂地嵌入到每個業(yè)務(wù)方法的try-catch塊中,會導(dǎo)致代碼重復(fù)嚴重,不利于維護,本文將探討如何利用SpringBoot面向切面編程(AOP) 來優(yōu)雅地解決這一難題,希望對大家有所幫助
    2025-08-08
  • Spring?Bean注冊與注入實現(xiàn)方法詳解

    Spring?Bean注冊與注入實現(xiàn)方法詳解

    首先,要學(xué)習(xí)Spring中的Bean的注入方式,就要先了解什么是依賴注入。依賴注入是指:讓調(diào)用類對某一接口的實現(xiàn)類的實現(xiàn)類的依賴關(guān)系由第三方注入,以此來消除調(diào)用類對某一接口實現(xiàn)類的依賴。Spring容器中支持的依賴注入方式主要有屬性注入、構(gòu)造函數(shù)注入、工廠方法注入
    2022-10-10
  • 淺談Java之Map 按值排序 (Map sort by value)

    淺談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ù)組的實現(xiàn)示例

    Java動態(tài)數(shù)組是一種可以任意伸縮數(shù)組長度的對象,本文主要介紹了Java 動態(tài)數(shù)組的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • SpringBoot整合MongoDB的示例

    SpringBoot整合MongoDB的示例

    這篇文章主要介紹了SpringBoot整合MongoDB的示例,幫助大家更好的理解和學(xué)習(xí)springboot框架,感興趣的朋友可以了解下
    2020-10-10

最新評論

北流市| 望城县| 凤山县| 正阳县| 葫芦岛市| 渝北区| 台州市| 射洪县| 革吉县| 藁城市| 图们市| 巴中市| 常宁市| 东安县| 博兴县| 延津县| 平阳县| 灌阳县| 岗巴县| 东兰县| 娄烦县| 富锦市| 唐海县| 临西县| 博爱县| 桑日县| 恩平市| 长岭县| 昌都县| 巢湖市| 尼勒克县| 鄢陵县| 两当县| 沂源县| 乐都县| 崇左市| 平遥县| 蒙自县| 右玉县| 济宁市| 永平县|