欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

最新評(píng)論