當前位置:
首頁 > 知識 > SpringBoot文檔翻譯系列

SpringBoot文檔翻譯系列

SpringBoot文檔翻譯系列


日誌

Spring使用CommonLogging作為內置日誌記錄工具,但也保留了底層日誌的實現。默認的配置提供了Java Util
Logging、Log4J2和LogBack。在不同情況下,可以通過預先的配置來選擇控制台輸出或者文件輸出。

默認情況下,如果你使用了SpringBoot的"Starters",將會使用LogBack作為日誌工具。其擁有適當的回退路由,以確保Java Util
Logging、Log4J2和Commons Logging的依賴庫可以正常工作。

注意:Java擁有許多的日誌框架。如果上面的日誌工具使你迷惑不堪,請不要擔心。一般情況下,並不需要你更改日誌依賴,SpringBoot也會工作的很好。


日誌格式

SpringBoot的默認日誌輸出如下

SpringBoot文檔翻譯系列

以下項目將會被輸出:

  • 日期和時間——毫秒級精度,易排序

  • 日誌級別——ERROR、WARN、INFO、DEBUG、TRACE

  • 進程ID

  • ---——用於區分真正日誌信息的分隔符

  • 線程名稱——使用方括弧括住(控制台輸出時可能會被截斷)

  • 日誌名稱——資源類名(通常是簡化的)

  • 日誌信息

注意:LogBack工具並沒有FATAL級別(這個級別會被映射到ERROR)

控制台輸出

採用默認的日誌配置日誌信息將會被輸出到控制台。默認情況下ERROR、WARN和INFO級別的信息將會被記錄顯示。你也可以通過啟動應用時添加--debug標籤來開啟debug模式。

$ java -jar muapp.jar --debug

注意:你也可以在application.properties配置文件中添加debug=true來達到同樣的目的。

當使用debug模式時,核心記錄器(包括內嵌容器、Hibernate和SpringBoot)被配置用來輸出更多信息。debug模式下並不會配置你的應用來記錄DEBUG級別的所有信息。

或者,你也可以通過類似的兩種方法開啟trace模式,這種模式將會輸出核心記錄器的跟蹤日誌。


著色輸出

如果你的終端支持ANSI,著色輸出的日誌信息講可以提升閱讀性。你可以設置spring.output.ansi.enabled為一個合適的值來覆蓋自動的獲取的值。

顏色編碼使用%clr來進行配置。在最簡單的形式中,轉換器將根據日誌級別對輸出進行著色,例如:

%clr(%5p)

日誌級別與著色的匹配關係如下:

SpringBoot文檔翻譯系列

另外,你也可以為轉換器添加一個選項的方式來指定顏色或者樣式,例如將文本輸出設置為黃色:

%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){yellow}

下面是SpringBoot支持的顏色或者樣式:

  • blue

  • cyan

  • faint

  • green

  • magenta

  • red

  • yellow

文件輸出

默認情況下,SpringBoot只會將日誌輸出到控制台,而不會輸出到文件中。如果你想將日誌不只輸出到控制台,還是輸出到文件中,你需要在application.properties文件中進行logging.file或者logging.path屬性設置。

下表中顯示了logging.*屬性如何一起來使用:

SpringBoot文檔翻譯系列

默認情況下,日誌文件會記錄控制台輸出、ERROR、WARN和INFO級別的日誌信息,並且在達到10M的時候重新創建文件來記錄。

注意:SpringBoot的日誌系統在應用程序生命周期的早期就完成初始化,因此通過@PropertiesSource註解載入的配置文件中的屬性將不會起到應有的作用(不生效)。

注意:日誌的屬性與實際的日誌基礎結構無關。因此,指定的配置內容(就像LogBack的logback.configurationFile屬性)並沒有被SpringBoot所管理。


日誌級別

所有支持的日誌系統都擁有在Spring Environment(環境就如SpringBoot中的application.properties)中使用logging.level.*=LEVEL的方式進行日誌級別的配置,其中LEVEL可以是TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF之一。根日誌可以使用屬性logging.level.root進行配置,例如:(在application.properties中)

1 logging.level.root=WARN2 logging.level.org.springframework.web=DEBUG3 logging.level.org.hibernate=ERROR

注意:默認情況下,SpringBoot會重定義Thymeleaf模板INFO信息,以使其可被DEBUG級別的日誌所記錄。這有助於減少標準日誌輸出中的亂象。有關如何在你的配置中重定義請參照LevelRemappingAppender。


自定義日誌配置

各類日誌系統可被類路徑下的適當的庫所激活,然後被類根路徑下的或者Spring環境中的logging.config屬性所指定的路徑下的適合的配置文件所自定義。

你可以通過org.springframework.boot.logging.LoggingSystem系統屬性來強制SpringBoot使用某一指定的日誌系統。其值為實現LoggingSystem的完全限定名。你也可以為其設置為none來似的日誌功能完全失效。

注意:因為日誌系統在ApplicationContext初始化之前就完成了初始化。所以無法通過@Configuration中的@PropertiesSources來控制日誌系統。系統屬性和SpringBoot的基本配置文件效用完好。

基於你的日誌系統,以下文件將會被載入:

SpringBoot文檔翻譯系列

注意:如果可能,我們建議您使用- spring變數來配置日誌配置(例如logBack-spring.xml而不是logBack.xml)如果你使用的以往的配置路徑,Spring將不能完整的控制日誌的初始化。

注意:Java Util日誌中有一些已知的類載入問題,這些問題在從「可執行jar」中運行時引起問題。我們建議你儘可能避免使用它。

為了幫助定製,一些其他屬性從Spring環境轉移到系統屬性:

SpringBoot文檔翻譯系列

所有支持的日誌系統都可以在解析其配置文件時查閱系統屬性。例如spring-boot.jar中的默認配置。

如果你想在一個日誌屬性中使用佔位符,你需要使用SpringBoot的語法,而不是底層框架的語法。另外如果你在使用LogBack,你需要使用:來分隔一個屬性和其默認值,而不是:-。

通過覆蓋LOG_LEVEL_PATTERN屬性(或者LogBack中的logging.pattern.level屬性),你可以在日誌行中添加MDC(Mapped Diagnostic Context映射調試上下文:是 log4j 和 logback 提供的一種方便在多線程條件下記錄日誌的功能)和ad-hoc(點對點)內容。例如:如果你使用logging.pattern.level=user:%X{user} %5p配置,則默認的日誌輸出格式將會包含一個名為user的MDC條目(當然需要存在才能顯示)例如:

2015-09-30 12:30:04.031 user:juergen INFO 22174 --- [ nio-8080-exec-0] demo.Controller Handling authenticated request

LogBack擴展

SpringBoot為LogBack提供了許多擴展屬性用於高級配置。你可以在你的logback-spring.xml配置文件中使用這些屬性。

注意:由於logback.xml文件載入的過於早(早於SpringBoot應用的啟動),所以你不能在其中使用這些擴展屬性,你需要使用logBack-spring.xml文件或者logging.config屬性。

注意:這些擴展屬性無法與LogBack的配置掃描器一起使用(無法被掃描到),如果你嘗試這樣做,你會得到類似於下面的這樣的錯誤記錄:

SpringBoot文檔翻譯系列


定製化的配置

<springProfile>標籤可用於在Spring配置文件中依據條件執行或者排除執行某些配置,其可用於<congfiguration>元素內的任何位置。使用name屬性來指定那個配置切面可被執行。多個Profile可以使用以逗號分割的方式來指定。

SpringBoot文檔翻譯系列


環境屬性

<springProperty>標籤可以允許你從Spring環境中提取屬性來用於LogBack。這在你從application.properties中獲取關於LogBack配置的屬性的值時很有效。這個標籤和LogBack的<properties>標籤類似的方式工作,並不是直接制定一個值,而是指定屬性的來源(source屬性)。你可以使用scope屬性來保存屬性,否則只會把存在本地。如果你想要指定一個可靠的值,以防其未被配置,你可以使用defaultValue屬性來指定一個默認值。

SpringBoot文檔翻譯系列

注意:source屬性的值必須採用串的形式(例如:my.property.name)。然而可以使用輕鬆的規則將屬性添加到環境中。

(轉自博客園)



找工作難?那是你沒選對行業!

2017年【中公教育】特別推出2017年就業促進計劃,500萬就業基金助你成為IT達人

詳情請戳:http//www.ujiuye.com/zt/jycj/?wt.bd=bgz

什麼?海量IT學習資料白給你都不要?別想了,加群搶:584539956

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 IT優就業 的精彩文章:

「js高手之路」html5 canvas系列教程-線形漸變
出行攻略|國慶假期,與其堵在路上,不如浪在這裡~
要放假了,沒別的,只是想送你點實用的東西!
實例|如何從兩個List中篩選出相同的值

TAG:IT優就業 |