springboot整合logback實(shí)現(xiàn)日志管理操作
本章節(jié)是記錄logback在springboot項(xiàng)目中的簡(jiǎn)單使用,本文將會(huì)演示如何通過(guò)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)目來(lái)。
二、標(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ù)來(lái)源和默認(rèn)值
屬性:
scope:作用域
name:變量名稱
source:數(shù)據(jù)來(lái)源
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來(lái)做事。
FileAppender:文件日志,我們不做演示,就用RollingFileAppender演示,功能差不多。
5、logger
單獨(dú)對(duì)某種日志做處理
6、root
統(tǒng)一的所有日志的處理(除了logger處理的)
三、實(shí)例演示
加入現(xiàn)在我有這樣一個(gè)需求:1、項(xiàng)目本身的日志我想記錄下來(lái)保存文件并打印控制臺(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è)變量來(lái)控制一下,通過(guò)springProperty標(biāo)簽實(shí)現(xiàn)

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


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

5、通過(guò)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)目本身的日志通過(guò)變量來(lái)控制是否輸入到日志文件,而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)文章
Spring-webflux?響應(yīng)式編程的實(shí)例詳解
Spring 提供了兩個(gè)并行堆棧,一種是基于帶有 Spring MVC 和 Spring Data 結(jié)構(gòu)的 Servlet API,另一個(gè)是完全反應(yīng)式堆棧,它利用了 Spring WebFlux 和 Spring Data 的反應(yīng)式存儲(chǔ)庫(kù),這篇文章主要介紹了Spring-webflux?響應(yīng)式編程,需要的朋友可以參考下2022-09-09
java 中ArrayList迭代的兩種實(shí)現(xiàn)方法
這篇文章主要介紹了java 中ArrayList迭代的兩種實(shí)現(xiàn)方法的相關(guān)資料,Iterator與for語(yǔ)句的結(jié)合,需要的朋友可以參考下2017-09-09
java設(shè)計(jì)模式之工廠模式實(shí)例詳解
這篇文章主要介紹了java設(shè)計(jì)模式之工廠模式,結(jié)合具有實(shí)例形式分析了java工廠模式的概念、原理、實(shí)現(xiàn)與使用方法,需要的朋友可以參考下2017-09-09
Shiro實(shí)現(xiàn)session限制登錄數(shù)量踢人下線功能
這篇文章主要介紹了Shiro實(shí)現(xiàn)session限制登錄數(shù)量踢人下線,本文記錄的是shiro采用session作為登錄方案時(shí),對(duì)用戶進(jìn)行限制數(shù)量登錄,以及剔除下線,需要的朋友可以參考下2023-11-11
校驗(yàn)非空的注解@NotNull如何取得自定義的message
這篇文章主要介紹了校驗(yàn)非空的注解@NotNull如何取得自定義的message,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09
SpringSecurity整合redission序列化問題小結(jié)(最新整理)
文章詳解SpringSecurity整合Redisson時(shí)的序列化問題,指出需排除官方Jackson依賴,通過(guò)自定義反序列化器(如AuthorizationGrantTypeDeserializer等)和Mixin類解決反序列化報(bào)錯(cuò)MissingTypeIdProperty,同時(shí)擴(kuò)展用戶信息為AuthUser,并提及開源框架Pig的使用2025-07-07
SpringBoot整合MongoDB實(shí)現(xiàn)事務(wù)管理
Spring Boot是一種快速開發(fā)Spring應(yīng)用的方式,它提供了大量的自動(dòng)配置和默認(rèn)設(shè)置,以簡(jiǎn)化開發(fā)流程,MongoDB是一個(gè)基于文檔的NoSQL數(shù)據(jù)庫(kù),本文將介紹如何在Spring Boot應(yīng)用中整合MongoDB,并實(shí)現(xiàn)事務(wù)管理,需要的朋友可以參考下2024-07-07
java多線程批量拆分List導(dǎo)入數(shù)據(jù)庫(kù)的實(shí)現(xiàn)過(guò)程
這篇文章主要給大家介紹了關(guān)于java多線程批量拆分List導(dǎo)入數(shù)據(jù)庫(kù)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2021-10-10

