新聞中心
日志配置詳解
Spring Boot使用Commons Logging記錄所有內(nèi)部日志,但保留底層日志實現(xiàn)的打開狀態(tài)。為JUL日志記錄、Log4J2和Logback提供了默認配置。在每種情況下,記錄器都預先配置為使用控制臺輸出,還可以使用可選的文件輸出。

創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設、高性價比壽縣網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式壽縣網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設找我們,業(yè)務覆蓋壽縣地區(qū)。費用合理售后完善,10年實體公司更值得信賴。
默認情況下,如果使用 “Starters”,則使用Logback進行日志記錄。還包括適當?shù)腖ogback路由,以確保使用JUL日志、Commons Logging、Log4J或SLF4J的依賴庫都能正常工作。
Java有很多可用的日志框架。如果上面的列表令人困惑,請不要擔心。通常,您不需要更改日志依賴項,Spring Boot默認值也可以正常工作。
1.1 日志格式
Spring Boot的默認日志輸出類似于以下示例:
2019-03-05 10:57:51.112 INFO 45469 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/7.0.52
2019-03-05 10:57:51.253 INFO 45469 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2019-03-05 10:57:51.253 INFO 45469 --- [ost-startStop-1] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 1358 ms
2019-03-05 10:57:51.698 INFO 45469 --- [ost-startStop-1] o.s.b.c.e.ServletRegistrationBean : Mapping servlet: 'dispatcherServlet' to [/]
2019-03-05 10:57:51.702 INFO 45469 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]輸出以下項目:日期和時間:毫秒精度,易于排序。
日志級別:ERROR, WARN, INFO, DEBUG, or TRACE (錯誤、警告、信息、調(diào)試或跟蹤) 。
進程ID。
一個---分隔符,用于區(qū)分實際日志消息的開始。
線程名稱:用方括號括起來(控制臺輸出可能會截斷)。
記錄器名稱:這通常是源類名稱(通??s寫)。
日志消息。
1.2 控制臺輸出
默認日志配置在寫入消息時將消息回顯到控制臺。默認情況下,會記錄錯誤級別error、警告級別warn和信息級別info的消息。你還可以通過使用--debug標志啟動應用程序來啟用“debug”模式。
$ java -jar myapp.jar --debug你還可以在application.properties中指定debug=true。
啟用debug模式時,將配置一組核心記錄器(嵌入式容器、Hibernate和Spring Boot)以輸出更多信息。啟用debug模式不會將應用程序配置為使用debug級別記錄所有消息。或者,你可以通過使用--trace標志(或application.properties中的trace=true)啟動應用程序來啟用“trace”模式。這樣做可以為一系列核心記錄器(嵌入式容器、Hibernate模式生成和整個Spring產(chǎn)品組合)啟用跟蹤日志記錄。
1.3 彩色輸出日志
如果終端支持ANSI,則顏色輸出用于幫助可讀性。可以將spring.output.ansi.enabled設置為支持的值以覆蓋自動檢測。
使用%clr轉(zhuǎn)換字配置顏色編碼。在最簡單的形式中,轉(zhuǎn)換器根據(jù)日志級別為輸出著色,如下例所示:
%clr(%5p)下表描述了日志級別到顏色的映射:
|
Level |
Color |
|
|
Red |
|
|
Red |
|
|
Yellow |
|
|
Green |
|
|
Green |
|
|
Green |
或者,您可以通過將顏色或樣式作為轉(zhuǎn)換選項來指定應使用的顏色或樣式。例如,要使文本變?yōu)辄S色,請使用以下設置:
%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){yellow}支持以下顏色和樣式:
- blue
- cyan
- faint
- green
- magenta
- red
- yellow
具體顏色的配置可以在logback.xml或logback-spring.xml中配置,也可以在application.properties中配置
logging:
pattern:
console: '%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){Green} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}'logback-spring.xml文件配置
%yellow(%date{yyyy-MM-dd HH:mm:ss}) |%highlight(%-5level) |%green(%logger:%line) |%black(%msg%n)
UTF-8
1.4 日志輸出文件
默認情況下,Spring Boot只將日志記錄到控制臺,不寫入日志文件。如果要在控制臺輸出之外寫入日志文件,則需要設置logging.file.name或logging.file.path屬性(例如,在application.properties中)。
下表顯示了如何將logging.*屬性一起使用:
|
|
|
Example |
Description |
|
(none) |
(none) |
僅輸出到控制臺 | |
|
Specific file |
(none) |
|
寫入指定的日志文件。名稱可以是精確的位置,也可以是相對于當前目錄的。 |
|
(none) |
Specific directory |
|
將'spring.log'寫入指定目錄。名稱可以是精確的位置,也可以是相對于當前目錄的。 |
日志文件在達到10 MB時會旋轉(zhuǎn),并且與控制臺輸出一樣,默認情況下會記錄錯誤級別、警告級別和信息級別的消息。
注意:logging.file.name與logging.file.path 不能同時出現(xiàn)
示例:
logging:
level:
com.pack: info
web: trace
file:
name: d:/logs/l.log1.5 日志文件轉(zhuǎn)動/交替
如果使用的是Logback,則可以使用application.properties或application.yaml文件微調(diào)日志轉(zhuǎn)動/交替設置。對于所有其他日志系統(tǒng),你需要自己直接配置轉(zhuǎn)動/交替設置(例如,如果使用Log4J2,則可以添加log4j.xml文件)。
支持以下輪換策略屬性:
|
Name |
Description |
|
|
用于創(chuàng)建日志存檔的文件名模式。 |
|
|
如果在應用程序啟動時應進行日志歸檔清理。 |
|
|
歸檔前日志文件的最大大小。 |
|
|
刪除日志存檔文件之前可以接受的最大大小。 |
|
|
保留日志存檔的天數(shù)(默認為7) |
如下:
logging:
logback:
rollingpolicy:
max-file-size: 2KB控制日志文件大小,不超過2KB,超過的自動歸檔(生成壓縮包)
1.6 日志級別
所有受支持的日志記錄系統(tǒng)都可以通過使用logging.level.
以下示例顯示application.properties中的可能的日志記錄設置:
logging:
level:
root: "warn"
org.springframework.web: "debug"
org.hibernate: "error"
com.pack: "error"還可以使用環(huán)境變量設置日志記錄級別。例如,日志記錄_LEVEL_ORG_SPRINGFRAMEWORK_WEB=DEBUG將ORG.SPRINGFRAMEWORK.WEB設置為DEBUG。
1.7 日志分組
能夠?qū)⑾嚓P(guān)的記錄器分組在一起通常很有用,這樣就可以同時對它們進行配置。例如,你可能通常會更改所有Tomcat相關(guān)記錄器的日志記錄級別,但你無法輕松記住頂級軟件包。為了幫助實現(xiàn)這一點,SpringBoot允許你在Spring環(huán)境中定義日志記錄組。例如,你可以通過將“tomcat”組添加到application.properties來定義它:
logging:
group:
tomcat: "org.apache.catalina,org.apache.coyote,org.apache.tomcat" #這里如果配置了會報錯,應該還需要配置什么吧。通過上面的定義后,你可以使用一行更改組中所有記錄器的級別:
logging:
level:
tomcat: "trace"Spring Boot包括以下可開箱即用的預定義日志組:
|
Name |
Loggers |
|
web |
|
|
sql |
|
這兩個非常有用。
1.8 自定義日志配置
可以通過在類路徑上包含適當?shù)膸靵砑せ罡鞣N日志記錄系統(tǒng),還可以通過在類路徑的根目錄中或以下Spring環(huán)境屬性指定的位置提供適當?shù)呐渲梦募磉M一步定制:logging.config。
通過使用org.springframework.Boot.logging.LoggingSystem屬性,可以強制Spring引導使用特定的日志系統(tǒng)。該值應該是LoggingSystem實現(xiàn)的完全限定類名。您還可以使用none值完全禁用Spring Boot的日志記錄配置。
由于日志記錄是在創(chuàng)建ApplicationContext之前初始化的,因此無法從Spring的@Configuration文件中的@PropertySources控制日志記錄。更改或完全禁用日志系統(tǒng)的唯一方法是通過系統(tǒng)屬性。
根據(jù)你的日志記錄系統(tǒng),將加載以下文件:
|
日志系統(tǒng) |
定制 |
|
Logback |
|
|
Log4j2 |
|
|
JDK (Java Util Logging) |
|
如果可能,我們建議您在日志配置中使用-spring變體(例如,logback-spring.xml而不是logback.xml)。如果使用標準配置位置,Spring無法完全控制日志初始化。
為了幫助進行自定義,其他一些屬性將從Spring環(huán)境傳輸?shù)较到y(tǒng)屬性,如下表所述:
|
Spring Environment |
System Property |
Comments |
|
|
|
記錄異常時使用的轉(zhuǎn)換字。 |
|
|
|
如果已定義,則在默認日志配置中使用。 |
|
|
|
如果已定義,則在默認日志配置中使用。 |
|
|
|
要在控制臺(stdout)上使用的日志模式。 |
|
|
|
日志日期格式的追加器模式。 |
|
|
|
用于控制臺日志記錄的字符集。 |
|
|
|
要在文件中使用的日志模式(如果啟用了“日志文件”)。 |
|
|
|
用于文件記錄的字符集(如果啟用了 |
|
|
|
呈現(xiàn)日志級別時要使用的格式(默認為 |
|
|
|
當前進程ID(如果可能,在尚未定義為OS環(huán)境變量時發(fā)現(xiàn))。 |
上面這些屬性(System Property)我們可以在logback-spring.xml文件中直接引用,如下:
[${PID}] - [${LOG_FILE}] - [${LOG_LEVEL_PATTERN}] %yellow(%date{yyyy-MM-dd HH:mm:ss}) |%highlight(%-6level) |%green(%logger:%line) |%black(%msg%n)
UTF-8
配置logging.pattern.level 屬性
logging:
pattern:
level: INFO輸出:
[13036] - [d:/logs/l.log] - [INFO] ?[33m2021-09-23 14:34:02?[0;39m |?[34mINFO ?[0;39m如果使用的是Logback,則還會傳輸以下屬性:
|
Spring Environment |
System Property |
Comments |
|
|
|
滾動日志文件名的模式 (default |
|
|
`LOGBACK_ROLLINGPOLICY_CLEAN_HISTORY_ON_START |
是否在啟動時清理歸檔日志文件。 |
|
|
|
最大日志文件大小。 |
|
|
|
要保留的日志備份的總大小。 |
|
|
`LOGBACK_ROLLINGPOLICY_MAX_HISTORY |
要保留的最大歸檔日志文件數(shù)。 |
所有受支持的日志系統(tǒng)在解析其配置文件時都可以查閱系統(tǒng)屬性。有關(guān)示例,請參閱spring-boot.jar中的默認配置:
- Logback
- Log4j 2
- Java Util logging
1.9 Logback擴展
Spring Boot包括許多對Logback的擴展,這些擴展可以幫助進行高級配置。你可以在logback-spring.xml配置文件中使用這些擴展名。
因為標準logback.xml配置文件加載得太早,所以不能在其中使用擴展名。您需要使用logback-spring.xml或定義logging.config屬性。
1.9.1 配置文件特定配置
1.9.2 環(huán)境屬性
示例:
${fluentHost}
...
配置文件配置自定義屬性:
custom:
props:
host: 127.0.0.1日志文件定義(logback-spring.xml):
日志文件中使用
[${host}] - [${PID}] - [${LOG_FILE}] - [${LOG_LEVEL_PATTERN}] %yellow(%date{yyyy-MM-dd HH:mm:ss}) |%highlight(%-6level) |%green(%logger:%line) |%black(%msg%n)
UTF-8
測試輸出:
[127.0.0.1] - [23188] - [d:/logs/l.log] - [INFO] ?[33m2021-09-23 14:46:46?[0;39m 本文標題:Springboot這些強大的日志功能,你使用過嗎?
URL網(wǎng)址:http://www.dlmjj.cn/article/djssdid.html


咨詢
建站咨詢
