Spring Boot 3.日誌
阿新 • • 發佈:2021-10-21
日誌
1. 日誌框架
- 小故事
小張,開發一個大型系統;
1. System.out.pringln('') 將關鍵資料列印在控制檯;去掉?下載一個檔案?
2. 框架來記錄系統的一些執行時資訊;日誌框架;zhangloging.jar
3. 高大上的功能?非同步模式?自動歸檔?xxxzhanglogging-good.jar
4. 將以前框架解除安裝下來?換上新的框架,重新修改之前的api;zhanglogging-prefect.jar
5. jdbc--資料庫驅動;
寫了一個統一的介面層;日誌門面(日誌的一個抽象層);logging-abstract.jar;
給專案中匯入具體的日誌實現就可以了,我們之前的日誌框架都是實現的抽象層 - 市面上的日誌框架
lul,jcl,jboss-logging,logback,jog4j,log4j2,slf4j。。。
左邊選一個門面(抽象層),右邊來選一個實現
日誌門面:slf4j
日誌實現:logback - spring boot:底層時 spring框架,spring框架預設使用的時 jcl
spring boot選用 slf4j和 logback
2. slf4j 使用
1. 如何在系統中使用 slf4j
- 以後開發的時候,日誌記錄方法的呼叫,不應該來直接呼叫日誌的實現類,而是呼叫日誌抽象裡面的方法。
- 官方地址 http://www.slf4j.org/manual.html
給系統裡面匯入 slf4j 的jar 和logback的實現 jarimport org.slf4j.Logger; import org.slf4j.LoggerFactory; public class HelloWorld { public static void main(String[] args) { Logger logger = LoggerFactory.getLogger(HelloWorld.class); logger.info("Hello World"); } }
每一個日誌的實現框架都有自己的配置檔案。使用slf4j以後,配置檔案還是做成日誌實現框架位元組本身的配置檔案。
2. 遺留問題
- a(slf4j+logback):spring(commons-logging),hibernate(jboos-logging),mybatis,xx
統一日誌記錄,即使是別的框架和我一起統一使用 slf4j進行輸出?
如何讓系統中所有的日誌統一到 slf4j
- 將系統中其他日誌框架先排除出去
- 用中間包來替換原有的日誌狂降。
- 我們匯入 slf4j其他的實現
3. spring boot日誌關係
- starter 每一個啟動器【場景】都要依賴的
spring boot使用它來做日誌功能<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency>
starter裡面依賴的 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </dependency> <dependency>
底層依賴關係:總結:- spring boot低沉也是 slf4j+logback的方式進行日誌記錄
- spring boot也把其他的日誌都替換成了 slf4j
- 中間替換包
- 如果我們要引入其他框架?一定要把這個框架的預設日誌依賴移除掉。
spring 框架用的是 commons-logging;
- spring boot能自動適配所有的日誌,而且底層使用 slf4j+logback的方式記錄日誌,引入其他框架的時候,只需要把這個框架依賴的日誌排除掉。
4. 日誌使用
1. 預設配置
- spring boot預設幫我們配置好了日誌