springboot項(xiàng)目日志配置的詳細(xì)指南
前言
最近公司新開一個(gè)項(xiàng)目,需要從零搭建、開發(fā),之前的工作都是在已完成的項(xiàng)目上進(jìn)行維護(hù) ,沒(méi)有重點(diǎn)關(guān)注這些項(xiàng)目的日志是如何配置的,借此機(jī)會(huì)總結(jié)一下boot項(xiàng)目如何合理配置日志,日志是項(xiàng)目遇到問(wèn)題時(shí)首先要排查的內(nèi)容,因此一個(gè)合理的日志配置必定會(huì)減少項(xiàng)目的維護(hù)難度,提升開發(fā)效率。
Logback+SLF4J簡(jiǎn)介
- SpringBoot默認(rèn)使用??Logback??作為日志框架,它與SLF4J(Simple Logging Facade for Java)結(jié)合使用,提供了一個(gè)高效、靈活的日志解決方案,Logback相比其他日志框架具有性能高、配置靈活、內(nèi)存占用小等優(yōu)點(diǎn),一般項(xiàng)目中使用默認(rèn)的Logback日志框架就足夠用了。
- 因此,實(shí)際在底層干活,輸出日志的組件的是Logback,SLF4J只是提供了一些方便的API和日志使用方式,實(shí)際底層也是調(diào)用Logback輸出日志。
- Logback 是通過(guò)spring-boot-starter-web或者其他依賴間接引入的,如果要使用其他日志框架,直接排除掉默認(rèn)的 spring-boot-starter-logging,再引入其他依賴即可。
- 日志有日志級(jí)別,日志級(jí)別從低到高分為:TRACE < DEBUG < INFO < WARN < ERROR。設(shè)置某個(gè)級(jí)別后,只會(huì)輸出該級(jí)別及更高級(jí)別的日志信息。級(jí)別越低,日志越詳細(xì),但輸出也越多;級(jí)別越高,只記錄越重要的問(wèn)題
| 日志級(jí)別 | 應(yīng)用場(chǎng)景 | 通俗理解 |
|---|---|---|
| TRACE | 記錄程序執(zhí)行的每一步細(xì)節(jié),用于極端細(xì)致的調(diào)試 | 流水賬 |
| DEBUG | 開發(fā)階段排查問(wèn)題,記錄變量值、方法執(zhí)行等 | 調(diào)試筆記 |
| INFO | 潛在的問(wèn)題或不影響系統(tǒng)的異常(如配置未設(shè)置使用默認(rèn)值) | 情況簡(jiǎn)報(bào) |
| WARN | 記錄程序執(zhí)行的每一步細(xì)節(jié),用于極端細(xì)致的調(diào)試 | 注意一下 |
| ERROR | 錯(cuò)誤事件,影響部分功能但系統(tǒng)仍可運(yùn)行(如數(shù)據(jù)庫(kù)連接失?。?/td> | 出問(wèn)題了 |
- 配置了日志級(jí)別后,當(dāng)我們的代碼調(diào)用日志、或者其他第三方框架內(nèi)部調(diào)用日志輸出時(shí),Logback 會(huì)檢查要輸出的日志級(jí)別和當(dāng)前已配置的日志級(jí)別,如果要輸出的日志級(jí)別大于配置的日志級(jí)別,日志會(huì)輸出,否則Logback 會(huì)忽略此條日志輸出。

如何配置日志
SpringBoot 支持兩種主要的 Logback 配置方式,這兩種配置方式可以組合使用;一種是在yaml配置文件中配置,這種配置方式比較簡(jiǎn)單,快捷,適用于簡(jiǎn)單的日志配置需求,優(yōu)先級(jí)較低,另一種是通過(guò)Logback專用logback-spring.xml配置文件,功能全面,支持高級(jí)功能如多環(huán)境、異步日志、復(fù)雜滾動(dòng)策略等,優(yōu)先級(jí)高
配置文件配置
這種方式適合快速設(shè)置和覆蓋默認(rèn)值。
# application.yml 示例
logging:
level:
root: INFO # 全局默認(rèn)日志級(jí)別
com.example.demo: DEBUG # 設(shè)置特定包的日志級(jí)別
org.springframework: WARN
file:
name: ./logs/myapp.log # 指定具體的日志文件路徑和名稱(通常設(shè)置一個(gè)即可)
# path: ./logs # 或者指定日志目錄,Spring Boot 會(huì)使用默認(rèn)文件名 spring.log
pattern:
console: "%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n" # 控制臺(tái)輸出格式
file: "%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n" # 文件輸出格式- ??logging.level??:控制日志級(jí)別。root設(shè)置根記錄器,其他為包或類名。
- ??logging.file.name或 logging.file.path??:定義日志輸出到文件。
- ??logging.pattern.console和 logging.pattern.file??:定義日志輸出格式。
使用Logback的XML配置文件
對(duì)于生產(chǎn)環(huán)境或需要精細(xì)控制的場(chǎng)景,logback-spring.xml是不二之選。將logback-spring.xml配置文件放在resources類路徑下
核心組件
一個(gè)完整的配置通常包含以下部分:
<configuration>根元素。<appender>定義日志輸出目的地(如控制臺(tái)、文件)和行為??,包含核心輸出器??ConsoleAppender:輸出到控制臺(tái)。RollingFileAppender:輸出到文件并支持??滾動(dòng)策略??(按時(shí)間、大小分割),防止單個(gè)文件過(guò)大<logger>??:為特定包或類配置日志級(jí)別和使用的 Appender<root>??:配置根記錄器,所有日志記錄器最終都繼承于此
配置案例
下面是一個(gè)比較標(biāo)準(zhǔn)的 Logback 配置文件,它很好地設(shè)置了日志輸出到控制臺(tái)和文件,并配置了日志滾動(dòng)策略。一般情況下如下配置就足夠滿足日志需求了
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 定義變量 -->
<property name="LOG_PATH" value="logs" />
<property name="CONSOLE_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n"/>
<!-- 控制臺(tái)輸出 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${CONSOLE_PATTERN}</pattern>
</encoder>
</appender>
<!-- 文件輸出與滾動(dòng)策略 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_PATH}/application.log</file>
<encoder>
<pattern>${CONSOLE_PATTERN}</pattern>
</encoder>
<!-- 當(dāng)application.log達(dá)到10MB或日期變更時(shí),會(huì)將其壓縮歸檔并按模式重命名,然后創(chuàng)建新的application.log寫入 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/archived/application-%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
<maxFileSize>10MB</maxFileSize>
<maxHistory>30</maxHistory>
</rollingPolicy>
</appender>
<!-- 設(shè)置全局日志級(jí)別 -->
<root level="INFO">
<appender-ref ref="CONSOLE" />
<appender-ref ref="FILE" />
</root>
<!-- 為特定包設(shè)置更詳細(xì)的日志級(jí)別 -->
<!-- <logger name="com.yourproject.service" level="DEBUG" />-->
</configuration>補(bǔ)充:Spring Boot日志文件配置指南
Spring Boot日志文件配置指南
在 Java Spring Boot 項(xiàng)目中配置日志輸出到文件,可以通過(guò)以下步驟實(shí)現(xiàn)。Spring Boot 默認(rèn)使用 Logback 作為日志框架,以下是兩種常用配置方式:
方法一:通過(guò)application.properties/application.yml配置(推薦)
這是最簡(jiǎn)單的配置方式,適合大多數(shù)場(chǎng)景。
1. 在配置文件中添加日志設(shè)置
application.properties 配置示例:
# 設(shè)置日志輸出路徑和文件名(二選一) logging.file.name=logs/app.log # 完整路徑(優(yōu)先使用) # 或指定目錄(自動(dòng)生成 spring.log) logging.file.path=logs # 日志級(jí)別設(shè)置 logging.level.root=INFO logging.level.com.yourpackage=DEBUG # 日志滾動(dòng)策略(防止日志文件過(guò)大) logging.logback.rollingpolicy.max-file-size=10MB # 單個(gè)文件最大 logging.logback.rollingpolicy.max-history=30 # 保留30天日志 logging.logback.rollingpolicy.total-size-cap=1GB # 歸檔總大小限制
application.yml 配置示例:
logging:
file:
name: logs/app.log
level:
root: INFO
com.yourpackage: DEBUG
logback:
rollingpolicy:
max-file-size: 10MB
max-history: 30
total-size-cap: 1GB2. 日志文件效果
- 日志輸出到
logs/app.log - 按大小滾動(dòng):
app.log→app.2023-01-01.0.log.gz(壓縮歸檔) - 保留最近 30 天的日志
方法二:自定義logback-spring.xml配置(高級(jí)需求)
當(dāng)需要復(fù)雜配置(如自定義格式、多環(huán)境配置、異步日志等)時(shí)使用。
1. 創(chuàng)建配置文件
在 src/main/resources 下新建 logback-spring.xml:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 通用配置 -->
<property name="LOG_PATH" value="logs" />
<property name="APP_NAME" value="your-app" />
<!-- 控制臺(tái)輸出 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!-- 文件輸出(按天歸檔) -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_PATH}/${APP_NAME}.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/${APP_NAME}.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
<maxFileSize>10MB</maxFileSize> <!-- 單個(gè)文件最大 -->
<maxHistory>30</maxHistory> <!-- 保留天數(shù) -->
<totalSizeCap>1GB</totalSizeCap> <!-- 總大小限制 -->
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} - %msg%n</pattern>
</encoder>
</appender>
<!-- 日志級(jí)別設(shè)置 -->
<root level="INFO">
<appender-ref ref="CONSOLE" />
<appender-ref ref="FILE" />
</root>
<!-- 包級(jí)別日志 -->
<logger name="com.yourpackage" level="DEBUG" />
</configuration>2. 關(guān)鍵配置說(shuō)明
RollingFileAppender:日志文件輸出核心組件SizeAndTimeBasedRollingPolicy:按日期 + 大小滾動(dòng)maxFileSize:?jiǎn)蝹€(gè)日志文件最大尺寸maxHistory:保留歷史日志天數(shù)fileNamePattern:歸檔文件名格式(.gz自動(dòng)壓縮)
到此這篇關(guān)于springboot項(xiàng)目日志配置指南的文章就介紹到這了,更多相關(guān)springboot日志配置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MyBatis中的循環(huán)插入insert foreach問(wèn)題
這篇文章主要介紹了MyBatis中的循環(huán)插入insert foreach問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11
springboot 在ftl頁(yè)面上使用shiro標(biāo)簽的實(shí)例代碼
這篇文章主要介紹了springboot 在ftl頁(yè)面上使用shiro標(biāo)簽的實(shí)例代碼,通過(guò)文字說(shuō)明結(jié)合實(shí)例的形式給大家介紹的非常詳細(xì),需要的朋友參考下吧2018-05-05
Java消息摘要算法MAC實(shí)現(xiàn)與應(yīng)用完整示例
這篇文章主要介紹了Java消息摘要算法MAC實(shí)現(xiàn)與應(yīng)用,結(jié)合完整實(shí)例形式分析了java消息摘要算法MAC的概念、原理、實(shí)現(xiàn)方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2019-09-09
Java使用HttpClient實(shí)現(xiàn)文件下載
這篇文章主要為大家詳細(xì)介紹了Java使用HttpClient實(shí)現(xiàn)文件下載,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08
springboot如何實(shí)現(xiàn)異步響應(yīng)請(qǐng)求(前端請(qǐng)求超時(shí)的問(wèn)題解決)
這篇文章主要給大家介紹了關(guān)于springboot如何實(shí)現(xiàn)異步響應(yīng)請(qǐng)求(前端請(qǐng)求超時(shí)的問(wèn)題解決)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用springboot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2023-01-01

