本教程中,我們將學習如何在 Spring Boot 中整合使用 Log4j2 日誌框架。 Log4j2 介紹 Spring Boot 中預設使用 Logback 作為日誌框架,接下來我們將學習如何在 Spring Boot 中集成與配置 Log4j2。在配置之前,我們需要知道的是 Log4j2 是 ...
本教程中,我們將學習如何在 Spring Boot 中整合使用 Log4j2 日誌框架。
Log4j2 介紹
Spring Boot 中預設使用 Logback 作為日誌框架,接下來我們將學習如何在 Spring Boot 中集成與配置 Log4j2。在配置之前,我們需要知道的是 Log4j2 是 Log4j 的升級版,它在 Log4j 的基礎上做了諸多改進:
- 1.非同步日誌;
- 2.支持 Java8 lambda 風格的懶載入日誌;
- 3.過濾器;
- 4.插件;
- 5.併發性改進;
- 6.支持: SLF4J, Commons Logging, Log4j-1.x 以及 java.util.logging;
- 7.配置熱載入;
- 8.自定義日誌級別;
看到上面這些新特性,我們肯定特別想在我們的 Spring Boot 應用中使用 Log4j2
添加 Maven 依賴
Spring Boot 預設使用的是 logback, 想要使用 Log4j2, 我們需要首先排除掉預設的日誌框架,然後添加 log4j2 依賴,下麵是 pom.xml
文件:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
添加 Gradle 依賴(可選)
如果你是通過 Gradle 來構建項目的,看下麵:
dependencies {
compile 'org.springframework.boot:spring-boot-starter-log4j2'
}
configurations {
all {
exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging'
}
}
添加 Log4j2 配置文件
Spring Boot 支持以下 4 種格式的配置文件:
- 1.xml(預設的)
- 2.json
- 3.yaml
- 4.properties 文件
Spring Boot 如果在 classpath:
目錄下找到了 log4j2.xml
或者 log4j2.json
或者 log4j2.properties
或者log4j2.yaml
的其中任意一個配置文件,就會自動載入並使用它。
接下來,我們來看看 log4j2.xml
格式,要如何配置?
在 /src/main/resource
目錄下創建 log4j2.xml
配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" monitorInterval="30">
<Properties>
<Property name="PID">????</Property>
<Property name="LOG_PATTERN">%clr{%d{yyyy-MM-dd HH:mm:ss.SSS}}{faint} %clr{%5p} %clr{${sys:PID}}{magenta} %clr{---}{faint} %clr{[%15.15t]}{faint} %clr{%-40.40c{1.}}{cyan} %clr{:}{faint} %m%n%xwEx</Property>
</Properties>
<Appenders>
<Console name="Console" target="SYSTEM_OUT" follow="true">
<PatternLayout pattern="${LOG_PATTERN}"/>
</Console>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
通過 Properties 文件來創建配置文件(可選)
如果你不喜歡通過 xml
的方式,你還可以選擇在 /src/main/resources
目錄下創建 log4j2.properties
:
status = error
name = Log4j2Sample
appenders = console
appender.console.type = Console
appender.console.name = STDOUT
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} - %msg%n
rootLogger.level = warn
rootLogger.appenderRefs = stdout
rootLogger.appenderRef.stdout.ref = STDOUT
Log4j2 實戰
一切準備就緒後,我們在 Application 啟動類中,創建一個測試的介面,在介面中列印日誌:
package site.exception.springbootlog4j2;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
public class SpringBootLog4j2Application {
public static void main(String[] args) {
SpringApplication.run(SpringBootLog4j2Application.class, args);
}
private static final Logger LOG = LogManager.getLogger(SpringBootLog4j2Application.class);
@GetMapping("/test")
public String test() {
LOG.debug("debug 級別日誌 ...");
LOG.info("info 級別日誌 ...");
LOG.warn("warn 級別日誌 ...");
LOG.error("error 級別日誌 ...");
LOG.fatal("fatal 級別日誌 ...");
return "Hello Log4j2 !";
}
}
啟動項目,看看控制台輸出:
2023-10-06 22:15:59.815 INFO 11936 --- [nio-8080-exec-1] s.e.s.SpringBootLog4j2Application : info 級別日誌 ...
2023-10-06 22:15:59.815 WARN 11936 --- [nio-8080-exec-1] s.e.s.SpringBootLog4j2Application : warn 級別日誌 ...
2023-10-06 22:15:59.815 ERROR 11936 --- [nio-8080-exec-1] s.e.s.SpringBootLog4j2Application : error 級別日誌 ...
2023-10-06 22:15:59.815 FATAL 11936 --- [nio-8080-exec-1] s.e.s.SpringBootLog4j2Application : fatal 級別日誌 ...
最後
歡迎大家關註我【小白技術圈】,回覆 B01或b01,雙手奉上Java相關書籍和麵試題!
本文來自博客園,作者:深碼青年,轉載請註明原文鏈接:https://www.cnblogs.com/shenMaQN/p/17745829.html