1. 日志記錄Spring Boot為所有內(nèi)部日志記錄使用Commons Logging,但開(kāi)放底層日志實(shí)現(xiàn),提供了Java Util Logging、Log4J2和Logback的默認(rèn)配置,在每種情況下,日志記錄器都被預(yù)先配置為使用控制臺(tái)輸出,可選的文件輸出也可用。 默認(rèn)情況下,如果使用“Starter”,則使用Logback進(jìn)行日志記錄,還包括適當(dāng)?shù)腖ogback路由,以確保使用Java Util Logging、Commons Logging、Log4J或SLF4J的依賴庫(kù)都能正確工作。 Java有很多日志框架可用,如果上面的列表看起來(lái)很混亂,不要擔(dān)心。一般情況下,你不需要更改日志依賴項(xiàng),Spring Boot缺省值也可以正常工作。 1.1 日志格式Spring Boot的默認(rèn)日志輸出類似于以下示例:
下面是輸出項(xiàng):
Logback沒(méi)有FATAL級(jí)別,它被映射為ERROR。 1.2 控制臺(tái)輸出默認(rèn)的日志配置會(huì)在消息被寫入時(shí)向控制臺(tái)回顯,默認(rèn)情況下,ERROR-級(jí)別、WARN-級(jí)別和INFO-級(jí)別的消息將被記錄下來(lái),還可以通過(guò)使用--debug標(biāo)志啟動(dòng)應(yīng)用程序來(lái)啟用“debug”模式。
你還可以在application.properties中指定debug=true。 啟用調(diào)試模式時(shí),將配置核心日志記錄器(嵌入式容器、Hibernate和Spring Boot)的選擇,以輸出更多信息,啟用調(diào)試模式不會(huì)將應(yīng)用程序配置為使用DEBUG級(jí)別記錄所有消息。 或者,你可以啟用“trace”模式,通過(guò)使用--trace標(biāo)志啟動(dòng)應(yīng)用程序(或在application.properties中trace=true),這樣做可以使trace日志記錄用于選擇核心日志記錄器(嵌入式容器、Hibernate模式生成和整個(gè)Spring組合)。 1.2.1 彩色編碼輸出如果你的終端支持ANSI,則使用顏色輸出來(lái)幫助提高可讀性,你可以將spring.output.ansi.enabled設(shè)置為支持的值,以覆蓋自動(dòng)檢測(cè)。 顏色編碼是通過(guò)使用%clr轉(zhuǎn)譯符來(lái)配置的,在最簡(jiǎn)單的形式中,轉(zhuǎn)換器將輸出按照日志級(jí)別進(jìn)行著色,如下面的示例所示:
下表描述了日志級(jí)別到顏色的映射: 或者,你也可以通過(guò)提供顏色或樣式作為轉(zhuǎn)換的選項(xiàng)來(lái)指定應(yīng)該使用的顏色或樣式,例如,要使文本變?yōu)辄S色,請(qǐng)使用以下設(shè)置:
支持以下顏色和風(fēng)格:
1.3 文件輸出默認(rèn)情況下,Spring Boot日志只記錄到控制臺(tái),不寫日志文件,如果你想在控制臺(tái)輸出之外寫入日志文件,你需要設(shè)置logging.file或logging.path屬性(例如,在你的application.properties中)。 下表顯示了如何將logging.*屬性結(jié)合使用: 表26.1. Logging屬性 日志文件在達(dá)到10MB時(shí)就會(huì)回滾,與控制臺(tái)輸出一樣,默認(rèn)情況下會(huì)記錄ERROR-級(jí)別、WARN-級(jí)別和INFO-級(jí)別的消息,可以使用logging.file.max-size屬性更改大小限制,除非logging.file.max-history屬性已被設(shè)置,否則之前回滾的文件將被無(wú)限期地歸檔。 日志系統(tǒng)在應(yīng)用程序生命周期的早期初始化,因此,在通過(guò)@PropertySource注解加載的屬性文件中沒(méi)有發(fā)現(xiàn)日志屬性。日志記錄屬性獨(dú)立于實(shí)際的日志記錄基礎(chǔ)設(shè)施,因此,特定的配置鍵(例如Logback的logback.configurationFile)不是由spring Boot管理的。 1.4 日志級(jí)別所有受支持的日志系統(tǒng)都可以在Spring Environment中通過(guò)使用logging.level. 下面的示例展示了application.properties中可能的日志記錄設(shè)置:
1.5 自定義日志配置可以通過(guò)在類路徑中包含適當(dāng)?shù)膸?kù)來(lái)激活各種日志系統(tǒng),還可以通過(guò)在類路徑的根目錄中或在以下Spring Environment屬性(logging.config)指定的位置中提供合適的配置文件來(lái)進(jìn)一步定制。 你可以通過(guò)使用org.springframework.boot.logging.LoggingSystem來(lái)強(qiáng)制Spring Boot使用特定的日志系統(tǒng),值應(yīng)該是LoggingSystem實(shí)現(xiàn)的完全限定類名,你還可以完全通過(guò)使用none值來(lái)禁用Spring Boot的日志配置。 因?yàn)槿罩臼窃趧?chuàng)建ApplicationContext之前初始化的,無(wú)法在Spring @Configuration文件中控制來(lái)自@PropertySources的logging,更改日志系統(tǒng)或完全禁用日志系統(tǒng)的唯一方法是通過(guò)系統(tǒng)屬性。依賴于你的日志系統(tǒng),加載下列文件: 如果可能的話,我們建議你對(duì)logging配置使用-spring變體(例如,logback-spring.xml而不是logback.xml),如果使用標(biāo)準(zhǔn)配置位置,Spring不能完全控制日志初始化。 Java Util Logging存在已知的類加載問(wèn)題,當(dāng)從“可執(zhí)行jar”運(yùn)行時(shí),會(huì)導(dǎo)致問(wèn)題,如果可能的話,我們建議你在運(yùn)行“可執(zhí)行jar”時(shí)避免使用它。 為了幫助定制,一些其他屬性從Spring Environment轉(zhuǎn)移到系統(tǒng)屬性,如下表所示: 所有支持的日志系統(tǒng)在解析配置文件時(shí)都可以參考系統(tǒng)屬性,在spring-boot.jar中看默認(rèn)配置的例子:
如果希望在logging屬性中使用占位符,你應(yīng)該使用Spring Boot的語(yǔ)法,而不是底層框架的語(yǔ)法,值得注意的是,如果你使用Logback,你應(yīng)該使用:作為屬性名與其默認(rèn)值之間的分隔符,而不是使用:-。 你可以通過(guò)只覆蓋LOG_LEVEL_PATTERN(或使用Logback的logging.pattern.level)來(lái)將MDC和其他特殊內(nèi)容添加到日志行中,例如,如果你使用logging.pattern.level=user:%X{user} %5p,然后,默認(rèn)的日志格式包含“user”的MDC項(xiàng),如果存在,如下例所示。
1.6 Logback擴(kuò)展Spring Boot包含許多可以幫助進(jìn)行高級(jí)配置的Logback擴(kuò)展,你可以在你的logback-spring.xml配置文件使用這些擴(kuò)展。 因?yàn)闃?biāo)準(zhǔn)logback.xml配置文件過(guò)早地加載,不能在其中使用擴(kuò)展,你需要使用logback-spring.xml或定義logging.config屬性。 不能使用Logback的配置掃描來(lái)使用擴(kuò)展,如果你嘗試這樣做,對(duì)配置文件進(jìn)行更改將導(dǎo)致類似于下面記錄的錯(cuò)誤之一:
1.6.1 特殊配置文件配置通過(guò)
1.6.2 環(huán)境屬性通過(guò)
必須在連接符形式中指定source(例如my.property-name),但是,可以使用寬松的規(guī)則將屬性添加到Environment中。
|
|
來(lái)自: 昵稱10087950 > 《JAVA》