摘要:默認(rèn)情況下,如果使用,則使用進(jìn)行日志記錄,還包括適當(dāng)?shù)穆酚桑源_保使用或的依賴庫都能正確工作。分隔符,用于區(qū)分實(shí)際日志消息的開始。
26. 日志記錄
Spring Boot為所有內(nèi)部日志記錄使用Commons Logging,但開放底層日志實(shí)現(xiàn),提供了Java Util Logging、Log4J2和Logback的默認(rèn)配置,在每種情況下,日志記錄器都被預(yù)先配置為使用控制臺輸出,可選的文件輸出也可用。
默認(rèn)情況下,如果使用“Starter”,則使用Logback進(jìn)行日志記錄,還包括適當(dāng)?shù)腖ogback路由,以確保使用Java Util Logging、Commons Logging、Log4J或SLF4J的依賴庫都能正確工作。
Java有很多日志框架可用,如果上面的列表看起來很混亂,不要擔(dān)心。一般情況下,你不需要更改日志依賴項(xiàng),Spring Boot缺省值也可以正常工作。26.1 日志格式
Spring Boot的默認(rèn)日志輸出類似于以下示例:
2014-03-05 10:57:51.112 INFO 45469 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/7.0.52 2014-03-05 10:57:51.253 INFO 45469 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 2014-03-05 10:57:51.253 INFO 45469 --- [ost-startStop-1] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 1358 ms 2014-03-05 10:57:51.698 INFO 45469 --- [ost-startStop-1] o.s.b.c.e.ServletRegistrationBean : Mapping servlet: "dispatcherServlet" to [/] 2014-03-05 10:57:51.702 INFO 45469 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean : Mapping filter: "hiddenHttpMethodFilter" to: [/*]
下面是輸出項(xiàng):
日期和時(shí)間:毫秒精度,易于分類。
日志級別:ERROR、WARN、INFO、DEBUG或TRACE。
進(jìn)程ID。
---分隔符,用于區(qū)分實(shí)際日志消息的開始。
線程名稱:用方括號括起來(可能被截?cái)嘤糜诳刂婆_輸出)。
記錄器名稱:這通常是源類名稱(通常縮寫)。
日志消息。
Logback沒有FATAL級別,它被映射為ERROR。26.2 控制臺輸出
默認(rèn)的日志配置會(huì)在消息被寫入時(shí)向控制臺回顯,默認(rèn)情況下,ERROR-級別、WARN-級別和INFO-級別的消息將被記錄下來,還可以通過使用--debug標(biāo)志啟動(dòng)應(yīng)用程序來啟用“debug”模式。
$ java -jar myapp.jar --debug
你還可以在application.properties中指定debug=true。
啟用調(diào)試模式時(shí),將配置核心日志記錄器(嵌入式容器、Hibernate和Spring Boot)的選擇,以輸出更多信息,啟用調(diào)試模式不會(huì)將應(yīng)用程序配置為使用DEBUG級別記錄所有消息。
或者,你可以啟用“trace”模式,通過使用--trace標(biāo)志啟動(dòng)應(yīng)用程序(或在application.properties中trace=true),這樣做可以使trace日志記錄用于選擇核心日志記錄器(嵌入式容器、Hibernate模式生成和整個(gè)Spring組合)。
26.2.1 彩色編碼輸出如果你的終端支持ANSI,則使用顏色輸出來幫助提高可讀性,你可以將spring.output.ansi.enabled設(shè)置為支持的值,以覆蓋自動(dòng)檢測。
顏色編碼是通過使用%clr轉(zhuǎn)譯符來配置的,在最簡單的形式中,轉(zhuǎn)換器將輸出按照日志級別進(jìn)行著色,如下面的示例所示:
%clr(%5p)
下表描述了日志級別到顏色的映射:
級別 | 顏色 |
---|---|
FATAL | Red |
ERROR | Red |
WARN | Yellow |
INFO | Green |
DEBUG | Green |
TRACE | Green |
或者,你也可以通過提供顏色或樣式作為轉(zhuǎn)換的選項(xiàng)來指定應(yīng)該使用的顏色或樣式,例如,要使文本變?yōu)辄S色,請使用以下設(shè)置:
%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){yellow}
支持以下顏色和風(fēng)格:
blue
cyan
faint
green
magenta
red
yellow
26.3 文件輸出默認(rèn)情況下,Spring Boot日志只記錄到控制臺,不寫日志文件,如果你想在控制臺輸出之外寫入日志文件,你需要設(shè)置logging.file或logging.path屬性(例如,在你的application.properties中)。
下表顯示了如何將logging.*屬性結(jié)合使用:
表26.1. Logging屬性
logging.file | logging.path | 樣例 | 描述 |
---|---|---|---|
(none) | (none) | 只控制臺記錄日志 | |
指定文件 | (none) | my.log | 寫入指定的日志文件,名稱可以是一個(gè)確切的位置或相對于當(dāng)前目錄 |
(none) | 指定文件 | /var/log | 寫如spring.log到指定的目錄,名稱可以是一個(gè)確切的位置或相對于當(dāng)前目錄 |
日志文件在達(dá)到10MB時(shí)就會(huì)回滾,與控制臺輸出一樣,默認(rèn)情況下會(huì)記錄ERROR-級別、WARN-級別和INFO-級別的消息,可以使用logging.file.max-size屬性更改大小限制,除非logging.file.max-history屬性已被設(shè)置,否則之前回滾的文件將被無限期地歸檔。
日志系統(tǒng)在應(yīng)用程序生命周期的早期初始化,因此,在通過@PropertySource注解加載的屬性文件中沒有發(fā)現(xiàn)日志屬性。26.4 日志級別日志記錄屬性獨(dú)立于實(shí)際的日志記錄基礎(chǔ)設(shè)施,因此,特定的配置鍵(例如Logback的logback.configurationFile)不是由spring Boot管理的。
所有受支持的日志系統(tǒng)都可以在Spring Environment中通過使用logging.level.
下面的示例展示了application.properties中可能的日志記錄設(shè)置:
logging.level.root=WARN logging.level.org.springframework.web=DEBUG logging.level.org.hibernate=ERROR26.5 自定義日志配置
可以通過在類路徑中包含適當(dāng)?shù)膸靵砑せ罡鞣N日志系統(tǒng),還可以通過在類路徑的根目錄中或在以下Spring Environment屬性(logging.config)指定的位置中提供合適的配置文件來進(jìn)一步定制。
你可以通過使用org.springframework.boot.logging.LoggingSystem來強(qiáng)制Spring Boot使用特定的日志系統(tǒng),值應(yīng)該是LoggingSystem實(shí)現(xiàn)的完全限定類名,你還可以完全通過使用none值來禁用Spring Boot的日志配置。
因?yàn)槿罩臼窃趧?chuàng)建ApplicationContext之前初始化的,無法在Spring @Configuration文件中控制來自@PropertySources的logging,更改日志系統(tǒng)或完全禁用日志系統(tǒng)的唯一方法是通過系統(tǒng)屬性。
依賴于你的日志系統(tǒng),加載下列文件:
Logging系統(tǒng) | 自定義 |
---|---|
Logback | logback-spring.xml,logback-spring.groovy,logback.xml,或logback.groovy |
Log4j2 | log4j2-spring.xml或log4j2.xml |
JDK (Java Util Logging) | logging.properties |
如果可能的話,我們建議你對logging配置使用-spring變體(例如,logback-spring.xml而不是logback.xml),如果使用標(biāo)準(zhǔn)配置位置,Spring不能完全控制日志初始化。
Java Util Logging存在已知的類加載問題,當(dāng)從“可執(zhí)行jar”運(yùn)行時(shí),會(huì)導(dǎo)致問題,如果可能的話,我們建議你在運(yùn)行“可執(zhí)行jar”時(shí)避免使用它。
為了幫助定制,一些其他屬性從Spring Environment轉(zhuǎn)移到系統(tǒng)屬性,如下表所示:
Spring環(huán)境 | 系統(tǒng)屬性 | 注釋 |
---|---|---|
logging.exception-conversion-word | LOG_EXCEPTION_CONVERSION_WORD | 記錄異常時(shí)使用的轉(zhuǎn)換詞 |
logging.file | LOG_FILE | 如果定義,則在默認(rèn)日志配置中使用 |
logging.file.max-size | LOG_FILE_MAX_SIZE | 最大日志文件大小(如果啟用LOG_FILE),(只支持默認(rèn)的Logback設(shè)置) |
logging.file.max-history | LOG_FILE_MAX_HISTORY | 要保存的歸檔日志文件的最大數(shù)量(如果啟用LOG_FILE),(只支持默認(rèn)的Logback設(shè)置) |
logging.path | LOG_PATH | 如果定義,則在默認(rèn)日志配置中使用 |
logging.pattern.console | CONSOLE_LOG_PATTERN | 控制臺上要使用的日志模式(stdout),(只支持默認(rèn)的Logback設(shè)置) |
logging.pattern.dateformat | LOG_DATEFORMAT_PATTERN | 日志日期格式的附加模式,(只支持默認(rèn)的Logback設(shè)置) |
logging.pattern.file | FILE_LOG_PATTERN | 在文件中使用的日志模式(如果啟用了LOG_FILE),(只支持默認(rèn)的Logback設(shè)置) |
logging.pattern.level | LOG_LEVEL_PATTERN | 在呈現(xiàn)日志級別時(shí)使用的格式(默認(rèn)%5p),(只支持默認(rèn)的Logback設(shè)置) |
PID | PID | 當(dāng)前進(jìn)程ID(如果可能的話會(huì)被發(fā)現(xiàn),當(dāng)還沒有被定義為OS環(huán)境變量時(shí)) |
所有支持的日志系統(tǒng)在解析配置文件時(shí)都可以參考系統(tǒng)屬性,在spring-boot.jar中看默認(rèn)配置的例子:
Logback
Log4j 2
Java Util logging
如果希望在logging屬性中使用占位符,你應(yīng)該使用Spring Boot的語法,而不是底層框架的語法,值得注意的是,如果你使用Logback,你應(yīng)該使用:作為屬性名與其默認(rèn)值之間的分隔符,而不是使用:-。
你可以通過只覆蓋LOG_LEVEL_PATTERN(或使用Logback的logging.pattern.level)來將MDC和其他特殊內(nèi)容添加到日志行中,例如,如果你使用logging.pattern.level=user:%X{user} %5p,然后,默認(rèn)的日志格式包含“user”的MDC項(xiàng),如果存在,如下例所示。
2015-09-30 12:30:04.031 user:someone INFO 22174 --- [ nio-8080-exec-0] demo.Controller Handling authenticated request26.6 Logback擴(kuò)展
Spring Boot包含許多可以幫助進(jìn)行高級配置的Logback擴(kuò)展,你可以在你的logback-spring.xml配置文件使用這些擴(kuò)展。
因?yàn)闃?biāo)準(zhǔn)logback.xml配置文件過早地加載,不能在其中使用擴(kuò)展,你需要使用logback-spring.xml或定義logging.config屬性。
不能使用Logback的配置掃描來使用擴(kuò)展,如果你嘗試這樣做,對配置文件進(jìn)行更改將導(dǎo)致類似于下面記錄的錯(cuò)誤之一:
ERROR in ch.qos.logback.core.joran.spi.Interpreter@4:71 - no applicable action for [springProperty], current ElementPath is [[configuration][springProperty]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@4:71 - no applicable action for [springProfile], current ElementPath is [[configuration][springProfile]]26.6.1 特殊配置文件配置
通過
26.6.2 環(huán)境屬性
通過
${fluentHost} ...
必須在連接符形式中指定source(例如my.property-name),但是,可以使用寬松的規(guī)則將屬性添加到Environment中。上一篇:配置文件 下一篇:開發(fā)Web應(yīng)用程序
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/71227.html
摘要:參考指南使你可以輕松地創(chuàng)建可運(yùn)行的獨(dú)立的生產(chǎn)級的基于的應(yīng)用程序,我們對平臺和第三方庫有自己的看法,這樣你就可以以最低限度工作開始了,大多數(shù)應(yīng)用程序都需要很少的配置。文檔本節(jié)簡要概述了參考文檔,它充當(dāng)文檔其余部分的映射。 Spring Boot 參考指南 Spring Boot使你可以輕松地創(chuàng)建可運(yùn)行的獨(dú)立的、生產(chǎn)級的基于Spring的應(yīng)用程序,我們對Spring平臺和第三方庫有自己的看...
摘要:第章附錄附錄通用的應(yīng)用程序?qū)傩钥梢栽谖募募蜃鳛槊钚虚_關(guān),中指定各種屬性,本附錄提供了一個(gè)通用的屬性列表和對使用它們的底層類的引用。本示例文件僅作為指南,不要將整個(gè)內(nèi)容復(fù)制粘貼到應(yīng)用程序中,相反,只選擇你需要的屬性。 第X章. 附錄 附錄A. 通用的應(yīng)用程序?qū)傩?可以在application.properties文件,application.yml文件,或作為命令行開關(guān),中指定...
摘要:許多配置示例已經(jīng)在上發(fā)布,它們使用配置。逐漸取代自動(dòng)配置自動(dòng)配置非侵入性,在任何時(shí)候,你都可以開始定義自己的配置來替換自動(dòng)配置的特定部分。最后,你還可以通過使用屬性來控制要排除的自動(dòng)配置類的列表。 15. 配置類 Spring Boot支持基于java的配置,雖然可以使用XML源的SpringApplication,但是我們通常建議你的主源是一個(gè)@Configuration類。通常,定...
摘要:關(guān)于文檔參考指南可用如下方式最新的副本可以在中找到。嘗試操作文檔,它們?yōu)樽畛R姷膯栴}提供解決方案。學(xué)習(xí)基礎(chǔ),構(gòu)建在許多其他項(xiàng)目上,網(wǎng)站提供豐富的參考文檔,如果你要從開始,嘗試其中一個(gè)指南。我們對進(jìn)行監(jiān)視,以解決帶有標(biāo)記的問題。 1. 關(guān)于文檔 Spring Boot 參考指南可用如下方式: HTML PDF EPUB 最新的副本可以在 docs.spring.io/spring-b...
摘要:構(gòu)建系統(tǒng)強(qiáng)烈建議你選擇一個(gè)支持依賴管理的構(gòu)建系統(tǒng),并且可以使用發(fā)布到中心存儲(chǔ)庫的工件。例如,要升級到另一個(gè),你可以將以下元素添加到你的在前面的示例中,我們指定了一個(gè),但是任何依賴類型都可以以相同的方式被覆蓋。 13. 構(gòu)建系統(tǒng) 強(qiáng)烈建議你選擇一個(gè)支持依賴管理的構(gòu)建系統(tǒng),并且可以使用發(fā)布到Maven中心存儲(chǔ)庫的工件。我們建議你選擇Maven或Gradle,可以讓Spring Boot與其...
閱讀 2178·2023-04-25 19:06
閱讀 1375·2021-11-17 09:33
閱讀 1767·2019-08-30 15:53
閱讀 2582·2019-08-30 14:20
閱讀 3541·2019-08-29 12:58
閱讀 3534·2019-08-26 13:27
閱讀 501·2019-08-26 12:23
閱讀 485·2019-08-26 12:22