SpringBoot選用SLF4j和logback;
SLF4j是抽象層,logback實現層
1、SLF4j使用
以後開發的時候,日誌記錄方法的調用,不應該來直接調用日誌的實現類,而是調用抽象接口類。
給系統裏面導入slf4j的jar和logback的實現jar
package com.example.demo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class HelloWorld {
public static void main(String[] args) {
Logger logger= LoggerFactory.getLogger(HelloWorld.class);
logger.info("HelloWorld");
}
}
每一個日誌的實現框架都有自己的配置文件。
使用了slf4j以後,配置文件還是做成日誌實現框架的自己本身配置文件。
2.遺留問題
a(slf4j+logback):Spring、Hibernate、MyBatis、xxxx:每一個框架的底層又使用了不同的日誌框架。
我們要做到的就是:統一日誌記錄,即使是別的框架和我一起統一使用slf4j輸出。
我們來看一下slf4j的legacy-api:http://www.slf4j.org/legacy.html
根據官方的來看,在多個框架下添加中間件進行替換,進行狸貓換太子,既能是的框架可以正常運行,然後添加slf4j進行日誌管理。
如何讓系統中所有的日誌都統一到slf4j:
1、將系統中其他日誌框架先排除出去;
2、用中間包來替換原有的日誌框架;
3、我們導入slf4j其他的實現。
3.SpringBoot的日誌文件
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>2.2.5.RELEASE</version>
<scope>compile</scope>
</dependency>
SpringBoot使用它來做日誌功能:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
<version>2.2.5.RELEASE</version>
<scope>compile</scope>
</dependency>
SpringBoot底層依賴關係
總結:
1、SpringBoot底層也是slf4j+logback的方式進行日誌記錄
2、SpringBoot也把其他的日誌都替換成了slf4j
3、中間替換包:
4、如果我們要引入其他框架?一定會要把這個框架的默認日誌依賴移除掉。
對於Spring5之後,Spring的底層jul已經被轉化成了log4j,然後log4j添加中間層,實際還是slf4j,達到了最好適配SpringBoot底層的slf4j+logback。