1. 程式人生 > 其它 >Spring Boot 3.日誌

Spring Boot 3.日誌

日誌

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的實現 jar
    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("Hello World");
      }
    }
    

    每一個日誌的實現框架都有自己的配置檔案。使用slf4j以後,配置檔案還是做成日誌實現框架位元組本身的配置檔案

2. 遺留問題

  • a(slf4j+logback):spring(commons-logging),hibernate(jboos-logging),mybatis,xx
    統一日誌記錄,即使是別的框架和我一起統一使用 slf4j進行輸出?
如何讓系統中所有的日誌統一到 slf4j
  1. 將系統中其他日誌框架先排除出去
  2. 用中間包來替換原有的日誌狂降。
  3. 我們匯入 slf4j其他的實現

3. spring boot日誌關係

  • starter 每一個啟動器【場景】都要依賴的
    	<dependency>
    		<groupId>org.springframework.boot</groupId>
    		<artifactId>spring-boot-starter</artifactId>
    	</dependency>
    
    spring boot使用它來做日誌功能
    starter裡面依賴的
    	<dependency>
    		<groupId>org.springframework.boot</groupId>
    		<artifactId>spring-boot-starter-logging</artifactId>
    	</dependency>
    	<dependency>
    

    底層依賴關係:總結:
    1. spring boot低沉也是 slf4j+logback的方式進行日誌記錄
    2. spring boot也把其他的日誌都替換成了 slf4j
    3. 中間替換包

    4. 如果我們要引入其他框架?一定要把這個框架的預設日誌依賴移除掉。
      spring 框架用的是 commons-logging;
  • spring boot能自動適配所有的日誌,而且底層使用 slf4j+logback的方式記錄日誌,引入其他框架的時候,只需要把這個框架依賴的日誌排除掉

4. 日誌使用

1. 預設配置

  • spring boot預設幫我們配置好了日誌