SpringBoot日志的使用解讀
SpringBoot默認(rèn)使用SLF4J作為日志門面(相當(dāng)于接口),Logback作為日志實現(xiàn)(實現(xiàn)可切換)
一.默認(rèn)輸出格式
1.日期時間
2.日志級別(從上至下級別越來越高):
TRACE:追蹤框架流程日志,一般不使用DEBUG:調(diào)試日志INFO:關(guān)鍵、感興趣日志WARN:警告日志ERROR:錯誤日志
3.進(jìn)程ID
4.---:消息分隔符
5.線程名:用[]包裹
6.Logger名:產(chǎn)生這條日志的類名
7.消息:具體日志內(nèi)容

二.使用
@Service
public class UserService{//創(chuàng)建UserService類對應(yīng)的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");
}導(dǎo)入lombok后使用@Slf4j注解,會自動創(chuàng)建變量名為log的Logger
只會輸出INFO及以上的日志級別,因為SpringBoot默認(rèn)日志級別為INFO
三.配置
通過yml文件配置日志(以logging開頭的日志)
項目中通常不使用該方式
原因:
- 日志需要較多自定義,放yml里導(dǎo)致其他配置也難以閱讀
- yml提供的日志配置只支持logback實現(xiàn),切換實現(xiàn)后不可用
- yml提供的logback配置不夠全面
通過xml配置日志
appender:負(fù)責(zé)寫日志的組件(輸出到控制臺、文件、日志服務(wù)器、消息隊列等等)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><!--設(shè)置日志格式-->
<pattern>%d{yyyy-MM-dd HH:mm:ss}[%thread] %-5level %logger -%msg%n</pattern>
</layout>
</appender>
<root level="info"><!--設(shè)置日志等級 及 生效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ù)日期、大小進(jì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><!--文件保存天數(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)文章
使用quartz時,傳入?yún)?shù)到j(luò)ob中的使用記錄
這篇文章主要介紹了使用quartz時,傳入?yún)?shù)到j(luò)ob中的使用記錄,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12
java實現(xiàn)字符串和數(shù)字轉(zhuǎn)換工具
這篇文章主要為大家詳細(xì)介紹了java實現(xiàn)字符串和數(shù)字轉(zhuǎn)換工具,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-04-04
Spring IOC簡單理解及創(chuàng)建對象的方式
這篇文章主要介紹了Spring IOC簡單理解及創(chuàng)建對象的方式,本文通過兩種方式給大家介紹創(chuàng)建對象的方法,通過實例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2021-09-09

