感謝博主 https://www.cnblogs.com/fishlittle/p/17950944
依賴
- SpringBoot 的 starter 自帶的是 logback 日志,若要使用 log4j2 日志,需要引入對應依賴。
- logback 日志和 log4j2 日志都是對 slf4j 門面的實現,只能存在一個,且必須存在一個,不存在或者存在多個都會出錯。
- 因此,在使用 log4j2 日志時,必須要在依賴中把 logback 給 exclude 掉。 并且,使用 log4j2 日志還需要適配器 log4j-slf4j-impl,它跟 SpringBoot 的 starter 自帶的 log4j-to-slf4j 是相互沖突的,因此還需要將 log4j-to-slf4j 也 exclude 掉。
- 因為 SpringBoot 的 starter 中已經帶有 slf4j 門面了,因此無需再引入 slf4j 依賴。
因為 2 的原因,故 springboot-starter 的依賴需要剔除 自身 logback :
<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>
進行了 2 后,又因為 3,我們要單獨加入 log4j 的相關庫
<!-- 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>
log4j2.xml(resources目錄下)
<?xml version="1.0" encoding="UTF-8"?>
<!--日志級別以及優先級排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
<!-- Configuration 后面的 status 用于設置 log4j2 自身內部的信息輸出,可以不設置,當設置成 trace 時,可以看到 log4j2 內部各種詳細輸出-->
<configuration status="INFO"><!--先定義所有的 appender--><appenders><!--輸出日志信息到控制臺--><console name="Console" target="SYSTEM_OUT"><!--控制日志輸出的格式--><PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/></console></appenders><!--然后定義 logger,只有定義了 logger 并引入的 appender,appender 才會生效--><!--root:用于指定項目的根日志,如果沒有單獨指定 Logger,則會使用 root 作為默認的日志輸出--><loggers><root level="info"><appender-ref ref="Console"/></root></loggers>
</configuration>
Springboot 的日志配置
logging:config: classpath:log4j2.xml