SpringBoot日志的使用解讀
更新時間:2025年02月18日 10:54:55 作者:Exill
本文主要介紹了SpringBoot中日志的使用方法,包括默認輸出格式、使用Lombok簡化日志代碼、通過yml和xml配置日志等
SpringBoot默認使用SLF4J作為日志門面(相當于接口),Logback作為日志實現(xiàn)(實現(xiàn)可切換)
一.默認輸出格式
1.日期時間
2.日志級別(從上至下級別越來越高):
TRACE
:追蹤框架流程日志,一般不使用DEBUG
:調(diào)試日志INFO
:關(guān)鍵、感興趣日志WARN
:警告日志ERROR
:錯誤日志
3.進程ID
4.---:消息分隔符
5.線程名:用[]包裹
6.Logger名:產(chǎn)生這條日志的類名
7.消息:具體日志內(nèi)容
二.使用
@Service public class UserService{//創(chuàng)建UserService類對應的Logger(SLF4J包下) private Logger logger= LoggerFactory.getLogger(getClass()); public void useLogger() {//使用 Loggerlogger.trace("TRACE"); logger.debug("DEBUG"); logger.info("INFO {} {}", "參1", "參2"); logger.warn("WARN"); logger.error("ERROR"); }
導入lombok后使用@Slf4j注解,會自動創(chuàng)建變量名為log的Logger
只會輸出INFO及以上的日志級別,因為SpringBoot默認日志級別為INFO
三.配置
通過yml文件配置日志(以logging開頭的日志)
項目中通常不使用該方式
原因:
- 日志需要較多自定義,放yml里導致其他配置也難以閱讀
- yml提供的日志配置只支持logback實現(xiàn),切換實現(xiàn)后不可用
- yml提供的logback配置不夠全面
通過xml配置日志
appender
:負責寫日志的組件(輸出到控制臺、文件、日志服務器、消息隊列等等)appender-ref
:引用某個appenderlayout
:配置日志輸出格式springProfile
:配置日志在開發(fā)/測試/生產(chǎn)環(huán)境生效springProperty
:在xml配置中引用yml的配置值property
:在xml中定義值
logback-spring.xml模板示例
<?xml version="1.0" encoding="UTF-8"?> <configuration><!--讀取yml配置中的spring.application.name值賦值給FILE_NAME變量--> <springProperty scope="context" name="FILE_NAME" source="spring.application.name"/><!--定義FILE_PATH變量--> <property name="FILE_PATH" value="./logs"/> <springProfile name="dev"><!--開發(fā)環(huán)境的日志配置--> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><!--輸出到控制臺--> <layout><!--設置日志格式--> <pattern>%d{yyyy-MM-dd HH:mm:ss}[%thread] %-5level %logger -%msg%n</pattern> </layout> </appender> <root level="info"><!--設置日志等級 及 生效appender--> <appender-ref ref="STDOUT"/> </root> </springProfile> <springProfile name="test"><!--測試環(huán)境的日志配置--> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <layout> <pattern>%d{yyyy-MM-dd HH:mm:ss}[%thread] %-5level %logger -%msg%n</pattern> </layout> </appender><!--輸出到文件,文件會根據(jù)日期、大小進行歸檔--> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><!--文件路徑--> <fileNamePattern>${FILE_PATH}/${FILE_NAME}%d{yyyy-MM-dd}.%i.log</fileNamePattern> <maxHistory>30</maxHistory><!--文件保存天數(shù)--> <maxFileSize>10MB</maxFileSize><!--一個文件最大值--> </rollingPolicy> <layout> <pattern>%d{yyyy-MM-dd HH:mm:ss}[%thread] %-5level %logger -%msg%n</pattern> </layout> </appender> <root level="info"> <appender-ref ref="STDOUT"/> <appender-ref ref="FILE"/> </root> </springProfile> <springProfile name="prod"><!--生產(chǎn)環(huán)境的日志配置--> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${FILE_PATH}/${FILE_NAME}%d{yyyy-MM-dd}.%i.log</fileNamePattern> <maxHistory>30</maxHistory> <maxFileSize>10MB</maxFileSize> </rollingPolicy> <layout> <pattern>%d{yyyy-MM-dd HH:mm:ss}[%thread] %-5level %logger -%msg%n</pattern> </layout> </appender> <root level="error"> <appender-ref ref="FILE"/> </root> </springProfile> </configuration>
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringCloud中的@RefreshScope注解與使用場景方式
SpringCloud中的@RefreshScope注解用于動態(tài)刷新Bean配置,解決外部配置變化時的問題,避免重啟應用,通過本文的詳細介紹,希望讀者能夠更好地掌握@RefreshScope的使用技巧,在實際項目中靈活應用,提升微服務應用的動態(tài)配置管理能力2024-12-12