springboot項目配置logback日志系統的實現
記錄springboot
項目配置logback
日志文件管理:
logback依賴jar包
SpringBoot
項目配置logback
理論上需要添加logback-classic
依賴jar
包:
<dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.3</version> </dependency>
但是因為SpringBoot
項目默認就是使用的就是logback
日志系統,創建SpringBoot
項目時引入的spring-boot-starter
或者spring-boot-starter-web
依賴jar
包中已經包含瞭spring-boot-starter-logging
的依賴,裡面同時包含多種日志系統依賴,如下圖所示:
包括logback和log4j,所以,無需額外添加依賴,直接配置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>
logback的默認配置
前面說到SpringBoot
項目默認使用logback
,那麼對於logback
的配置情況,SpringBoot
又是如何定義的呢?
首先,SpringBoot
會從resource
包下查找logback-test.xml
或logback.xml
,如果這兩個都不存在,則會調用BasicConfigurator
,創建一個最小化的基本配置。
最小化配置由一個關聯到根logger
的ConsoleAppender
組成,默認輸出模式為%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
,root logger
級別為DEBUG
,所以並不會生成日志文件,隻會輸出到控制臺。
創建logback.xml配置文件
通過自定義logback.xml
配置文件來控制日志輸出情況,通常我們會配置三個日志組件:
- 控制臺輸出
- 輸出info級別日志文件
- 輸出error級別日志文件
以下為logback.xml
完整配置
<!-- Logback configuration. See http://logback.qos.ch/manual/index.html --> <configuration scan="true" scanPeriod="2 seconds"> <!--定義日志文件的存儲地址--> <property name="LOG_PATH" value="./logs" /> <!-- 控制臺輸出 --> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <!--格式化輸出:%d表示日期,%-5level:級別從左顯示5個字符寬度,%t表示線程名,%msg:日志消息,%n是換行符--> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level ${PID:-} --- [%t] %logger{50} - %msg%n</pattern> </encoder> </appender> <!-- info級別日志文件輸出 --> <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> <!-- 日志文件保留天數 --> <maxHistory>30</maxHistory> <!-- 日志文件最大大小:100MB --> <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級別日志文件輸出 --> <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 日志輸出級別,優先級 > '<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> <!-- 默認日志輸出級別 --> <root level="INFO"> <appender-ref ref="STDOUT" /> <appender-ref ref="INFO_FILE" /> <appender-ref ref="ERROR_FILE" /> </root> </configuration>
logback配置說明
根節點configuration
<configuration scan="true" scanPeriod="2 seconds" debug="false"> </configuration>
configuration包含以下三個屬性:
- scan:配置文件發生更改時,進行重載,默認值為true
- scanPeriod:監測配置文件是否有修改的時間間隔,默認值為6000,默認單位為毫秒
- debug:打印logback內部日志信息,實時查看logback運行狀態,默認值為false
子節點property:
<property name="LOG_PATH" value="./logs" />
用來定義變量值,包含以下兩個屬性
- name:變量名稱
- value:變量定義的值
通過property
定義的值會被插入到logger
上下文中,可以使${}
來使用變量,這裡定義瞭log
的保存位置根目錄。
子節點appender:
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> </appender>
是負責寫日志的組件,通過自定義日志組件控制日志輸出的情況,包含以下兩個屬性:
- name:組件名稱
- class:組件class指定的類名
不同的class,對應不同的功能:
如ch.qos.logback.core.ConsoleAppender
會把日志輸出到控制臺
ch.qos.logback.core.rolling.RollingFileAppender
把日志內容輸出到指定文件
File節點:日志文件輸出的文件名
<File>${LOG_PATH}/info.log</File>
filter節點:過濾器,用來指定日志組件的日志輸出級別,優先級高於root節點的level。
<filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>ERROR</level> </filter>
rollingPolicy節點:
滾動日志文件配置,涉及日志文件的移動和重命名,隻有一個class
屬性,用來指定滾動策略,這裡使用的是ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy
包含以下三個屬性:
- fileNamePattern:發生滾動時的日志命名方式
- maxHistory:日志文件的最大保留時間,超過設定時間後會自動刪除
- maxFileSize:每份日志文件的最大限制,超出限制後會重新生成,並將舊的日志文件按照fileNamePattern設定的日志命名方式進行命名
<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
<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>
對記錄事件進行格式化,負責兩件事,一是把日志信息轉換成字節數組,二是把字節數組寫入到輸出流。
PatternLayoutEncoder 是唯一有用的且默認的encoder ,有一個
節點,用來設置日志的輸入格式。使用“%”加“轉換符”方式,如果要輸出“%”,則必須用“\”對“%”進行轉義。
子節點root
根loger
,是所有loger
的最上級,且隻有一個level
節點,用類設置打印日志的級別,默認值為debug
,通常設置為info
,此外還有trace、warn、error、all、off
級別。
子節點appender-ref的ref
屬性指定日志組件名稱,即appender
的name
屬性值。
使用logback
在yml
文件中增加logging.config
指定配置文件地址,命名為logback時可以不需要配置,
SpringBoot`會自動查找。
level
設置指定路徑下的日志輸出級別。
logging: config: classpath:logback.xml level: com: springboot: debug
如圖所示,項目啟動後,訪問接口輸出日志內容並生成指定日志文件:
內容參考
博客園-ryelqy-logback的使用和logback.xml詳解
到此這篇關於springboot項目配置logback日志系統的實現的文章就介紹到這瞭,更多相關springboot配置logback日志系統內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- None Found