17:SpringBoot整合LogBack作爲日誌組件

企業級項目在搭建的時候,最不可或缺的一部分就是日誌,日誌可以用來調試程序,打印運行日誌以及錯誤信息方便於我們後期對系統的維護,在SpringBoot興起之前記錄日誌最出色的莫過於log4j了,對於目前來說項目還有很多在用log4j來記錄日誌。那麼我們的SpringBoot是怎麼記錄日誌的?

17:SpringBoot整合LogBack作為日誌組件

SpringBoot內部集成了LogBack日誌依賴,SpringBoot默認使用LogBack記錄日誌信息,默認根據base.xml配置內容來輸出到控制檯和文件之中,那麼接下來講解LogBack是如何記錄日誌到控制和文件之中?

本章目標

學習SpringBoot項目中使用LogBack記錄日誌到控制檯和文件之中,根據不同的級別輸出不同形式日誌信息。

構建項目

因為SpringBoot內部集成了LogBack所以我們不需要添加任何依賴,我們只需要創建一個新的空項目即可。如下圖1所示:

17:SpringBoot整合LogBack作為日誌組件

圖1

我們創建項目是選擇的WAR類型,所以自動添加了WEB、Tomcat。這個對我們的講解無關緊要,因為SpringBoot有默認的配置所以我們並不需要添加任何操作,現在日誌就可以在控制檯打印了,為了證實這一點,我們先來創建一個IndexController然後添加一個訪問方法/index,在該方法內添加日誌的info級別的打印(默認配置只有Info及以上級別才可以輸出),代碼如下圖2所示:

17:SpringBoot整合LogBack作為日誌組件

圖2

下面我們來啟動項目,訪問地址127.0.0.1:8080/index,查看控制檯的輸出效果,如下圖3所示:

17:SpringBoot整合LogBack作為日誌組件

圖3

我們訪問地址後,控制檯就對應的輸出了info級別的測試日誌內容了,上面我們說了這是logback的默認配置base.xml搞的鬼,那麼我們該如何修改默認配置呢?

修改LogBack配置

LogBack讀取配置文件的步驟

(1)嘗試classpath下查找文件logback-test.xml

(2)如果文件不存在,嘗試查找logback.xml

(3)如果兩個文件都不存在,LogBack用BasicConfiguration自動對自己進行最小化配置,這樣既實現了上面我們不需要添加任何配置就可以輸出到控制檯日誌信息。

接下來我們在resources目錄下創建名叫logback.xml的文件,並且添加日誌配置輸出到文件內按天存儲到不同的文件之中。具體配置如下圖4所示:

17:SpringBoot整合LogBack作為日誌組件

圖4

我們在logback.xml配置文件中,添加了控制檯輸出、文件每天輸出、日誌文件最大上限、日誌的最低級別等。下面我們來運行下項目查看我們的配置是否起作用了。

測試LogBack

修改我們的IndexController內的index方法並添加多個日誌級別的輸出,為了方便對照我們的配置是否生效,如下圖5所示:

17:SpringBoot整合LogBack作為日誌組件

圖5

我們logback.xml配置文件配置了根輸出等級是INFO,所以如果logback.xml生效,那麼我們的控制檯以及文件內將不會存在Debug級別的日誌輸出,我們重啟下項目,訪問之前的地址/index查看控制檯以及/logs/runtime.xxxx.log配置文件內容,如下圖6、7所示:

17:SpringBoot整合LogBack作為日誌組件

圖6

17:SpringBoot整合LogBack作為日誌組件

圖7

可以看到正如我們的推測的一般,Debug級別的日誌沒有輸出,只有INFO以及ERROR級別日誌打印並輸出到文件中。我們配置的./logs作為日誌的輸出根目錄,所以

LogBack自動在我們的項目根目錄下創建名叫做logs的文件夾,並且項目啟動時第一次記錄日誌時會自動創建根據我們的命名方式的文件。

屏蔽記錄日誌

如果我們在項目中需要屏蔽某個或者多個包下不輸出日誌也不記錄日誌到文件內,那麼我們需要修改application.yml添加對應配置,如下圖8所示:

17:SpringBoot整合LogBack作為日誌組件

圖8

可以看到我們屏蔽了com.yuqiyu.chapter12.controller包下的日誌打印,為了方便測試我們在com.yuqiyu.chapter12包下創建一個名叫TestController的控制器並複製IndexController的沒內容如下圖9所示:

17:SpringBoot整合LogBack作為日誌組件

圖9

我們再來重啟下項目,訪問127.0.0.1:8080/index地址後再查看下控制檯以及日誌文件內是否存在日誌信息,如下圖10所示:

17:SpringBoot整合LogBack作為日誌組件

圖10

控制檯並沒有打印任何的日誌,日誌文件中也是如此!我們再來訪問下127.0.0.1:8080/test地址,查看控制檯以及日誌文件內容,如下圖11、12所示:

17:SpringBoot整合LogBack作為日誌組件

圖11

17:SpringBoot整合LogBack作為日誌組件

圖12

可以看到成功打印了日誌,證明了我們的配置已經生效了。當然也可以改變某個包下的日誌輸出等級,只需要將'OFF'改成對應等級即可。

注意

在application.yml配置文件內,off必須添加雙引號,否則不會生效。

總結

以上內容就是有關LogBack配置相關講解,本章主要講解了SpringBoot如何使用內置的日誌組件完成日誌的輸出、日誌保存到文件、控制日誌輸出等。


本號已開設如下二十大專題,歡迎關注,查看相關專題!

  • 【springboot專題】【spring源碼】
  • 【mysql優化專題】【HTTP協議】
  • 【架構技術專題】【多線程專題】
  • 【dubbo專題】【dubbo源碼專題】
  • 【JVM調優專題】【HTTP專題】
  • 【設計模式專題】【高併發專題】
  • 【架構技術專題】【Lucene專題】
  • 【數據結構專題】【redis專題】
  • 【mq中間件專題】【netty專題】
  • 【java面試專題】【zookeeper】


分享到:


相關文章: