您好,登錄后才能下訂單哦!
這篇文章主要介紹了springboot項(xiàng)目配置logback日志系統(tǒng)的實(shí)現(xiàn)示例,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
記錄springboot
項(xiàng)目配置logback
日志文件管理:
SpringBoot
項(xiàng)目配置logback
理論上需要添加logback-classic
依賴jar
包:
<dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.3</version> </dependency>
但是因?yàn)?code>SpringBoot項(xiàng)目默認(rèn)就是使用的就是logback
日志系統(tǒng),創(chuàng)建SpringBoot
項(xiàng)目時(shí)引入的spring-boot-starter
或者spring-boot-starter-web
依賴jar
包中已經(jīng)包含了spring-boot-starter-logging
的依賴,里面同時(shí)包含多種日志系統(tǒng)依賴,如下圖所示:
包括logback和log4j,所以,無(wú)需額外添加依賴,直接配置logback.xml
就可以了。
此外,如果需要切換為log4j2
,那么需要在spring-boot-starter-web
依賴中排除springboot
自帶的commons‐logging
,然后在引入log4j2
的依賴jar
包,如下所示:
<!--排除 commons‐logging--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>commons‐logging</groupId> <artifactId>commons‐logging</artifactId> </exclusion> </exclusions> </dependency> <!--引入log4j2 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j2</artifactId> </dependency>
前面說(shuō)到SpringBoot
項(xiàng)目默認(rèn)使用logback
,那么對(duì)于logback
的配置情況,SpringBoot
又是如何定義的呢?
首先,SpringBoot
會(huì)從resource
包下查找logback-test.xml
或logback.xml
,如果這兩個(gè)都不存在,則會(huì)調(diào)用BasicConfigurator
,創(chuàng)建一個(gè)最小化的基本配置。
最小化配置由一個(gè)關(guān)聯(lián)到根logger
的ConsoleAppender
組成,默認(rèn)輸出模式為%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
,root logger
級(jí)別為DEBUG
,所以并不會(huì)生成日志文件,只會(huì)輸出到控制臺(tái)。
通過(guò)自定義logback.xml
配置文件來(lái)控制日志輸出情況,通常我們會(huì)配置三個(gè)日志組件:
控制臺(tái)輸出
輸出info級(jí)別日志文件
輸出error級(jí)別日志文件
以下為logback.xml
完整配置
<!-- Logback configuration. See http://logback.qos.ch/manual/index.html --> <configuration scan="true" scanPeriod="2 seconds"> <!--定義日志文件的存儲(chǔ)地址--> <property name="LOG_PATH" value="./logs" /> <!-- 控制臺(tái)輸出 --> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <!--格式化輸出:%d表示日期,%-5level:級(jí)別從左顯示5個(gè)字符寬度,%t表示線程名,%msg:日志消息,%n是換行符--> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level ${PID:-} --- [%t] %logger{50} - %msg%n</pattern> </encoder> </appender> <!-- info級(jí)別日志文件輸出 --> <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 日志文件輸出的文件名 --> <File>${LOG_PATH}/info.log</File> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <!-- 每日生成日志文件或日志文件大小超出限制后輸出的文件名模板 --> <fileNamePattern>${LOG_PATH}/info-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <!-- 日志文件保留天數(shù) --> <maxHistory>30</maxHistory> <!-- 日志文件最大大?。?00MB --> <maxFileSize>100MB</maxFileSize> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level ${PID:-} --- [%t] %logger{50} - %msg%n</pattern> </encoder> </appender> <!-- error級(jí)別日志文件輸出 --> <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 日志輸出級(jí)別,優(yōu)先級(jí) > '<root level>' --> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>ERROR</level> </filter> <File>${LOG_PATH}/error.log</File> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${LOG_PATH}/error-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <maxHistory>30</maxHistory> <maxFileSize>100MB</maxFileSize> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level ${PID:-} --- [%t] %logger{50} - %msg%n</pattern> </encoder> </appender> <!-- 默認(rèn)日志輸出級(jí)別 --> <root level="INFO"> <appender-ref ref="STDOUT" /> <appender-ref ref="INFO_FILE" /> <appender-ref ref="ERROR_FILE" /> </root> </configuration>
<configuration scan="true" scanPeriod="2 seconds" debug="false"> </configuration>
configuration包含以下三個(gè)屬性:
scan:配置文件發(fā)生更改時(shí),進(jìn)行重載,默認(rèn)值為true
scanPeriod:監(jiān)測(cè)配置文件是否有修改的時(shí)間間隔,默認(rèn)值為6000,默認(rèn)單位為毫秒
debug:打印logback內(nèi)部日志信息,實(shí)時(shí)查看logback運(yùn)行狀態(tài),默認(rèn)值為false
<property name="LOG_PATH" value="./logs" />
用來(lái)定義變量值,包含以下兩個(gè)屬性
name:變量名稱
value:變量定義的值
通過(guò)property
定義的值會(huì)被插入到logger
上下文中,可以使${}
來(lái)使用變量,這里定義了log
的保存位置根目錄。
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> </appender>
是負(fù)責(zé)寫(xiě)日志的組件,通過(guò)自定義日志組件控制日志輸出的情況,包含以下兩個(gè)屬性:
name:組件名稱
class:組件class指定的類名
不同的class,對(duì)應(yīng)不同的功能:
如ch.qos.logback.core.ConsoleAppender
會(huì)把日志輸出到控制臺(tái)
ch.qos.logback.core.rolling.RollingFileAppender
把日志內(nèi)容輸出到指定文件
File節(jié)點(diǎn):日志文件輸出的文件名
<File>${LOG_PATH}/info.log</File>
filter節(jié)點(diǎn):過(guò)濾器,用來(lái)指定日志組件的日志輸出級(jí)別,優(yōu)先級(jí)高于root節(jié)點(diǎn)的level。
<filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>ERROR</level> </filter>
滾動(dòng)日志文件配置,涉及日志文件的移動(dòng)和重命名,只有一個(gè)class
屬性,用來(lái)指定滾動(dòng)策略,這里使用的是ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy
包含以下三個(gè)屬性:
fileNamePattern:發(fā)生滾動(dòng)時(shí)的日志命名方式
maxHistory:日志文件的最大保留時(shí)間,超過(guò)設(shè)定時(shí)間后會(huì)自動(dòng)刪除
maxFileSize:每份日志文件的最大限制,超出限制后會(huì)重新生成,并將舊的日志文件按照f(shuō)ileNamePattern設(shè)定的日志命名方式進(jìn)行命名
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${LOG_PATH}/error-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <maxHistory>30</maxHistory> <maxFileSize>100MB</maxFileSize> </rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level ${PID:-} --- [%t] %logger{50} - %msg%n</pattern> </encoder>
對(duì)記錄事件進(jìn)行格式化,負(fù)責(zé)兩件事,一是把日志信息轉(zhuǎn)換成字節(jié)數(shù)組,二是把字節(jié)數(shù)組寫(xiě)入到輸出流。
PatternLayoutEncoder 是唯一有用的且默認(rèn)的encoder ,有一個(gè)
根loger
,是所有loger
的最上級(jí),且只有一個(gè)level
節(jié)點(diǎn),用類設(shè)置打印日志的級(jí)別,默認(rèn)值為debug
,通常設(shè)置為info
,此外還有trace、warn、error、all、off
級(jí)別。
子節(jié)點(diǎn)appender-ref的ref
屬性指定日志組件名稱,即appender
的name
屬性值。
在yml
文件中增加logging.config
指定配置文件地址,命名為logback時(shí)可以不需要配置,
SpringBoot`會(huì)自動(dòng)查找。
level
設(shè)置指定路徑下的日志輸出級(jí)別。
logging: config: classpath:logback.xml level: com: springboot: debug
如圖所示,項(xiàng)目啟動(dòng)后,訪問(wèn)接口輸出日志內(nèi)容并生成指定日志文件:
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“springboot項(xiàng)目配置logback日志系統(tǒng)的實(shí)現(xiàn)示例”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。