企業(yè)級(jí)項(xiàng)目在搭建的時(shí)候,最不可或缺的一部分就是日志剂碴,日志可以用來(lái)調(diào)試程序阳柔,打印運(yùn)行日志以及錯(cuò)誤信息方便于我們后期對(duì)系統(tǒng)的維護(hù),在SpringBoot興起之前記錄日志最出色的莫過(guò)于log4j了舀患,對(duì)于目前來(lái)說(shuō)項(xiàng)目還有很多在用log4j來(lái)記錄日志徽级。那么我們的SpringBoot是怎么記錄日志的?
SpringBoot內(nèi)部集成了LogBack日志依賴聊浅,SpringBoot默認(rèn)使用LogBack記錄日志信息餐抢,默認(rèn)根據(jù)base.xml配置內(nèi)容來(lái)輸出到控制臺(tái)和文件之中现使,那么接下來(lái)講解LogBack是如何記錄日志到控制和文件之中?
免費(fèi)專題文章匯總
恒宇少年在博客整理出來(lái)了SpringBoot旷痕、ApiBoot碳锈、SpringCloud的文章匯總【SpringBoot基礎(chǔ)教程專題】,【SpringCloud基礎(chǔ)教程專題】欺抗,【ApiBoot組件使用專題】
本章目標(biāo)
學(xué)習(xí)SpringBoot項(xiàng)目中使用LogBack記錄日志到控制臺(tái)和文件之中售碳,根據(jù)不同的級(jí)別輸出不同形式日志信息。
構(gòu)建項(xiàng)目
因?yàn)镾pringBoot內(nèi)部集成了LogBack所以我們不需要添加任何依賴绞呈,我們只需要?jiǎng)?chuàng)建一個(gè)新的空項(xiàng)目即可贸人。如下圖1所示:
我們創(chuàng)建項(xiàng)目是選擇的WAR類型,所以自動(dòng)添加了WEB佃声、Tomcat艺智。這個(gè)對(duì)我們的講解無(wú)關(guān)緊要,因?yàn)?b>SpringBoot有默認(rèn)的配置所以我們并不需要添加任何操作圾亏,現(xiàn)在日志就可以在控制臺(tái)打印了力惯,為了證實(shí)這一點(diǎn),我們先來(lái)創(chuàng)建一個(gè)IndexController然后添加一個(gè)訪問(wèn)方法/index召嘶,在該方法內(nèi)添加日志的info級(jí)別的打痈妇А(默認(rèn)配置只有Info及以上級(jí)別才可以輸出),代碼如下圖2所示:
下面我們來(lái)啟動(dòng)項(xiàng)目弄跌,訪問(wèn)地址127.0.0.1:8080/index甲喝,查看控制臺(tái)的輸出效果,如下圖3所示:
我們?cè)L問(wèn)地址后铛只,控制臺(tái)就對(duì)應(yīng)的輸出了info級(jí)別的測(cè)試日志內(nèi)容了埠胖,上面我們說(shuō)了這是logback的默認(rèn)配置base.xml搞的鬼,那么我們?cè)撊绾涡薷哪J(rèn)配置呢淳玩?
修改LogBack配置
LogBack讀取配置文件的步驟
(1)嘗試classpath下查找文件logback-test.xml
(2)如果文件不存在直撤,嘗試查找logback.xml
(3)如果兩個(gè)文件都不存在,LogBack用BasicConfiguration自動(dòng)對(duì)自己進(jìn)行最小化配置蜕着,這樣既實(shí)現(xiàn)了上面我們不需要添加任何配置就可以輸出到控制臺(tái)日志信息谋竖。
接下來(lái)我們?cè)?b>resources目錄下創(chuàng)建名叫logback.xml的文件,并且添加日志配置輸出到文件內(nèi)按天存儲(chǔ)到不同的文件之中承匣。具體配置如下圖4所示:
我們?cè)趌ogback.xml配置文件中蓖乘,添加了控制臺(tái)輸出、文件每天輸出韧骗、日志文件最大上限嘉抒、日志的最低級(jí)別等。下面我們來(lái)運(yùn)行下項(xiàng)目查看我們的配置是否起作用了袍暴。
測(cè)試LogBack
修改我們的IndexController內(nèi)的index方法并添加多個(gè)日志級(jí)別的輸出些侍,為了方便對(duì)照我們的配置是否生效隶症,如下圖5所示:
我們logback.xml配置文件配置了根輸出等級(jí)是INFO,所以如果logback.xml生效岗宣,那么我們的控制臺(tái)以及文件內(nèi)將不會(huì)存在Debug級(jí)別的日志輸出蚂会,我們重啟下項(xiàng)目,訪問(wèn)之前的地址/index查看控制臺(tái)以及/logs/runtime.xxxx.log配置文件內(nèi)容狈定,如下圖6颂龙、7所示:
可以看到正如我們的推測(cè)的一般习蓬,Debug級(jí)別的日志沒(méi)有輸出纽什,只有INFO以及ERROR級(jí)別日志打印并輸出到文件中。我們配置的./logs作為日志的輸出根目錄躲叼,所以LogBack自動(dòng)在我們的項(xiàng)目根目錄下創(chuàng)建名叫做logs的文件夾芦缰,并且項(xiàng)目啟動(dòng)時(shí)第一次記錄日志時(shí)會(huì)自動(dòng)創(chuàng)建根據(jù)我們的命名方式的文件。
屏蔽記錄日志
如果我們?cè)陧?xiàng)目中需要屏蔽某個(gè)或者多個(gè)包下不輸出日志也不記錄日志到文件內(nèi)枫慷,那么我們需要修改application.yml添加對(duì)應(yīng)配置让蕾,如下圖8所示:
可以看到我們屏蔽了com.yuqiyu.chapter12.controller包下的日志打印,為了方便測(cè)試我們?cè)?b>com.yuqiyu.chapter12包下創(chuàng)建一個(gè)名叫TestController的控制器并復(fù)制IndexController的沒(méi)內(nèi)容如下圖9所示:
我們?cè)賮?lái)重啟下項(xiàng)目或听,訪問(wèn)127.0.0.1:8080/index地址后再查看下控制臺(tái)以及日志文件內(nèi)是否存在日志信息探孝,如下圖10所示:
控制臺(tái)并沒(méi)有打印任何的日志,日志文件中也是如此誉裆!我們?cè)賮?lái)訪問(wèn)下127.0.0.1:8080/test地址顿颅,查看控制臺(tái)以及日志文件內(nèi)容,如下圖11足丢、12所示:
可以看到成功打印了日志粱腻,證明了我們的配置已經(jīng)生效了。當(dāng)然也可以改變某個(gè)包下的日志輸出等級(jí)斩跌,只需要將'OFF'改成對(duì)應(yīng)等級(jí)即可绍些。
注意
在application.yml配置文件內(nèi),off必須添加雙引號(hào)耀鸦,否則不會(huì)生效柬批。
總結(jié)
以上內(nèi)容就是有關(guān)LogBack配置相關(guān)講解,本章主要講解了SpringBoot如何使用內(nèi)置的日志組件完成日志的輸出袖订、日志保存到文件萝快、控制日志輸出等。
本章內(nèi)容已經(jīng)上傳到碼云:
SpringBoot配套源碼地址:https://gitee.com/hengboy/spring-boot-chapter
SpringCloud配套源碼地址:https://gitee.com/hengboy/spring-cloud-chapter
SpringBoot相關(guān)系列文章請(qǐng)?jiān)L問(wèn):目錄:SpringBoot學(xué)習(xí)目錄
QueryDSL相關(guān)系列文章請(qǐng)?jiān)L問(wèn):QueryDSL通用查詢框架學(xué)習(xí)目錄
SpringDataJPA相關(guān)系列文章請(qǐng)?jiān)L問(wèn):目錄:SpringDataJPA學(xué)習(xí)目錄
SpringBoot相關(guān)文章請(qǐng)?jiān)L問(wèn):目錄:SpringBoot學(xué)習(xí)目錄著角,感謝閱讀揪漩!
歡迎微信掃碼加入知識(shí)星球,恒宇少年帶你走以后的技術(shù)道路@艨凇Q偃荨冰更!
知識(shí)星球 - 恒宇少年