企業級項目在搭建的時候,最不可或缺的一部分就是日誌,日誌能夠用來調試程序,打印運行日誌以及錯誤信息方便於咱們後期對系統的維護,在SpringBoot興起以前記錄日誌最出色的莫過於log4j了,對於目前來講項目還有不少在用log4j來記錄日誌。那麼咱們的SpringBoot是怎麼記錄日誌的?git
SpringBoot內部集成了LogBack日誌依賴,SpringBoot默認使用LogBack記錄日誌信息,默認根據base.xml配置內容來輸出到控制檯和文件之中,那麼接下來說解LogBack是如何記錄日誌到控制和文件之中?spring
學習SpringBoot項目中使用LogBack記錄日誌到控制檯和文件之中,根據不一樣的級別輸出不一樣形式日誌信息。app
由於SpringBoot內部集成了LogBack因此咱們不須要添加任何依賴,咱們只須要建立一個新的空項目便可。以下圖1所示:框架
咱們建立項目是選擇的WAR類型,因此自動添加了WEB、Tomcat。這個對咱們的講解可有可無,由於SpringBoot有默認的配置因此咱們並不須要添加任何操做,如今日誌就能夠在控制檯打印了,爲了證明這一點,咱們先來建立一個IndexController而後添加一個訪問方法/index,在該方法內添加日誌的info級別的打印(默認配置只有Info及以上級別才能夠輸出),代碼以下圖2所示:spring-boot
下面咱們來啓動項目,訪問地址127.0.0.1:8080/index,查看控制檯的輸出效果,以下圖3所示:學習
咱們訪問地址後,控制檯就對應的輸出了info級別的測試日誌內容了,上面咱們說了這是logback的默認配置base.xml搞的鬼,那麼咱們該如何修改默認配置呢?測試
LogBack讀取配置文件的步驟
(1)嘗試classpath下查找文件logback-test.xml
(2)若是文件不存在,嘗試查找logback.xml
(3)若是兩個文件都不存在,LogBack用BasicConfiguration自動對本身進行最小化配置,這樣既實現了上面咱們不須要添加任何配置就能夠輸出到控制檯日誌信息。spa
接下來咱們在resources目錄下建立名叫logback.xml的文件,而且添加日誌配置輸出到文件內按天存儲到不一樣的文件之中。具體配置以下圖4所示:3d
咱們在logback.xml配置文件中,添加了控制檯輸出、文件天天輸出、日誌文件最大上限、日誌的最低級別等。下面咱們來運行下項目查看咱們的配置是否起做用了。調試
修改咱們的IndexController內的index方法並添加多個日誌級別的輸出,爲了方便對照咱們的配置是否生效,以下圖5所示:
咱們logback.xml配置文件配置了根輸出等級是INFO,因此若是logback.xml生效,那麼咱們的控制檯以及文件內將不會存在Debug級別的日誌輸出,咱們重啓下項目,訪問以前的地址/index查看控制檯以及/logs/runtime.xxxx.log配置文件內容,以下圖六、7所示:
能夠看到正如咱們的推測的通常,Debug級別的日誌沒有輸出,只有INFO以及ERROR級別日誌打印並輸出到文件中。咱們配置的./logs做爲日誌的輸出根目錄,因此LogBack自動在咱們的項目根目錄下建立名叫作logs的文件夾,而且項目啓動時第一次記錄日誌時會自動建立根據咱們的命名方式的文件。
若是咱們在項目中須要屏蔽某個或者多個包下不輸出日誌也不記錄日誌到文件內,那麼咱們須要修改application.yml添加對應配置,以下圖8所示:
能夠看到咱們屏蔽了com.yuqiyu.chapter12.controller包下的日誌打印,爲了方便測試咱們在com.yuqiyu.chapter12包下建立一個名叫TestController的控制器並複製IndexController的沒內容以下圖9所示:
咱們再來重啓下項目,訪問127.0.0.1:8080/index地址後再查看下控制檯以及日誌文件內是否存在日誌信息,以下圖10所示:
控制檯並無打印任何的日誌,日誌文件中也是如此!咱們再來訪問下127.0.0.1:8080/test地址,查看控制檯以及日誌文件內容,以下圖十一、12所示:
能夠看到成功打印了日誌,證實了咱們的配置已經生效了。固然也能夠改變某個包下的日誌輸出等級,只須要將'OFF'改爲對應等級便可。
在application.yml配置文件內,off必須添加雙引號,不然不會生效。
以上內容就是有關LogBack配置相關講解,本章主要講解了SpringBoot如何使用內置的日誌組件完成日誌的輸出、日誌保存到文件、控制日誌輸出等。
本章內容已經上傳到碼雲:
SpringBoot配套源碼地址:gitee.com/hengboy/spr…
SpringCloud配套源碼地址:gitee.com/hengboy/spr…
SpringBoot相關係列文章請訪問:目錄:SpringBoot學習目錄
QueryDSL相關係列文章請訪問:QueryDSL通用查詢框架學習目錄
SpringDataJPA相關係列文章請訪問:目錄:SpringDataJPA學習目錄
SpringBoot相關文章請訪問:目錄:SpringBoot學習目錄,感謝閱讀!
歡迎加入QQ技術交流羣,共同進步。