springboot整合logback實(shí)現(xiàn)日志管理操作
本章節(jié)是記錄logback在springboot項(xiàng)目中的簡(jiǎn)單使用,本文將會(huì)演示如何通過logback將日志記錄到日志文件或輸出到控制臺(tái)等管理操作。將會(huì)從以下幾個(gè)方面進(jìn)行講解。最后實(shí)現(xiàn)將特定級(jí)別的特定日志保存到日志文件。
一、依賴
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.10</version>
</dependency>
<dependency>
<groupId>org.codehaus.janino</groupId>
<artifactId>janino</artifactId>
<version>3.0.6</version>
</dependency>以上版本只是測(cè)試時(shí)使用,實(shí)際版本根據(jù)項(xiàng)目來。
二、標(biāo)簽介紹
1、configuration
logback配置文件的根標(biāo)簽
屬性:
scan:當(dāng)此屬性設(shè)置為true時(shí),配置文件如果發(fā)生改變,將會(huì)被重新加載,默認(rèn)值為true。
scanPeriod:設(shè)置監(jiān)測(cè)配置文件是否有修改的時(shí)間間隔,如果沒有給出時(shí)間單位,默認(rèn)單位是毫秒,當(dāng)scan為true時(shí),此屬性生效。默認(rèn)的時(shí)間間隔為1分鐘。
debug:當(dāng)此屬性設(shè)置為true時(shí),將打印出logback內(nèi)部日志信息,實(shí)時(shí)查看logback運(yùn)行狀態(tài)。默認(rèn)值為false
2、springProperty
我理解的是配置常量值的數(shù)據(jù)來源和默認(rèn)值
屬性:
scope:作用域
name:變量名稱
source:數(shù)據(jù)來源
defaultValue:默認(rèn)值
3、property
定義常量和給常量賦值
屬性:
name:常量名稱
value:常量值
4、appender
日志的具體格式或者保存地址等配置處理
屬性:
name:appender的名字
class:類型,有ConsoleAppender、RollingFileAppender、AsyncAppender、FileAppender。ConsoleAppender:控制臺(tái)日志。
RollingFileAppender:滾動(dòng)文件日志,繼承于FileAppender,使用更便捷。
AsyncAppender:異步日志,相較于其他的,他不負(fù)責(zé)處理日志,只是將日志緩沖到一個(gè)BlockingQueue里面去,并在內(nèi)部創(chuàng)建一個(gè)工作線程從隊(duì)列頭部獲取日志,之后將獲取的日志循環(huán)記錄到附加的其他 appender上去,從而達(dá)到不阻塞主線程的效果。因此AsynAppender僅僅充當(dāng)事件轉(zhuǎn)發(fā)器,必須引用另一個(gè)appender來做事。
FileAppender:文件日志,我們不做演示,就用RollingFileAppender演示,功能差不多。
5、logger
單獨(dú)對(duì)某種日志做處理
6、root
統(tǒng)一的所有日志的處理(除了logger處理的)
三、實(shí)例演示
加入現(xiàn)在我有這樣一個(gè)需求:1、項(xiàng)目本身的日志我想記錄下來保存文件并打印控制臺(tái);2、springfox.documentation這個(gè)包下面關(guān)于swagger的日志我覺得沒有用處并不想存入文件只打印控制臺(tái)就可以了;3、其他的第三方包該輸出什么日志就都保存文件并打印控制臺(tái)不做干涉;4、我還想做一個(gè)配置可以控制向日志文件輸出的開關(guān)。
有了這個(gè)需求,我們就可以開始做了。
1、新建一個(gè)xml文件


留下如上內(nèi)容。
2、增加configuration標(biāo)簽
<?xml version="1.0" encoding="UTF-8"?> <configuration scan="false" scanPeriod="60 seconds" debug="false"> </configuration>
3、由于需要控制是否需要向日志文件輸入就需要新增一個(gè)變量來控制一下,通過springProperty標(biāo)簽實(shí)現(xiàn)

我們后面需要指定一個(gè)文件存日志,文件名就叫項(xiàng)目名,所以再增加一個(gè)項(xiàng)目名變量,同樣通過springProperty標(biāo)簽實(shí)現(xiàn)。


4、通過property標(biāo)簽新增幾個(gè)常量來統(tǒng)一一下文件配置的一些值

5、通過appender標(biāo)簽實(shí)現(xiàn)日志的處理規(guī)則

新增三個(gè)類型的appender,class如上固定路徑。設(shè)置編碼格式和輸出格式等。異步日志appender綁定到name為rolling的滾動(dòng)日志即為實(shí)際是走name為rolling的appender邏輯,只是先到async緩沖一下。
6、新增logger便簽,配置成項(xiàng)目本身的日志通過變量來控制是否輸入到日志文件,而springfox.documentation這個(gè)包只輸出到控制臺(tái)

7、再配置root標(biāo)簽

沒有特別定義則默認(rèn)為root,任何一個(gè)類只會(huì)和一個(gè)logger對(duì)應(yīng)。
8、驗(yàn)證

隨便增加一個(gè)項(xiàng)目本身的日志輸出,啟動(dòng)項(xiàng)目。

可以看到多了一個(gè)日志文件。

可以看到特殊處理的包日志文件沒有,而控制臺(tái)存在。

而項(xiàng)目本身的日志確實(shí)是都存在。手動(dòng)清空日志文件,并將配置改為關(guān)閉,重啟項(xiàng)目。


可以看到確實(shí)沒有向日志文件輸出了,控制臺(tái)的日志也明顯較少,只有項(xiàng)目本身的日志和springfox.documentation的日志了。

logback的筆記到此結(jié)束,歡迎交流。
到此這篇關(guān)于springboot整合logback實(shí)現(xiàn)日志管理的文章就介紹到這了,更多相關(guān)springboot整合logback內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot如何獲取application.properties中自定義的值
這篇文章主要介紹了SpringBoot獲取application.properties中的自定義的值,目錄結(jié)構(gòu)文件代碼給大家列舉的非常詳細(xì),需要的朋友可以參考下2021-09-09
Springboot基于enable模塊驅(qū)動(dòng)的實(shí)現(xiàn)
這篇文章主要介紹了Springboot基于enable模塊驅(qū)動(dòng)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
Java實(shí)現(xiàn)判斷瀏覽器版本與類型簡(jiǎn)單代碼示例
這篇文章主要介紹了Java實(shí)現(xiàn)判斷瀏覽器版本與類型簡(jiǎn)單代碼示例,具有一定借鑒價(jià)值,需要的朋友可以參考下。2017-12-12
使用SpringCloudApiGateway之支持Cors跨域請(qǐng)求
這篇文章主要介紹了使用SpringCloudApiGateway之支持Cors跨域請(qǐng)求的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07
Java上傳文件進(jìn)度條的實(shí)現(xiàn)方法(附demo源碼下載)
這篇文章主要介紹了Java上傳文件進(jìn)度條的實(shí)現(xiàn)方法,可簡(jiǎn)單實(shí)現(xiàn)顯示文件上傳比特?cái)?shù)及進(jìn)度的功能,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下2015-12-12

