<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Spring Boot 參考指南(日志記錄)

          共 5153字,需瀏覽 11分鐘

           ·

          2020-08-05 18:24

          作者:博弈

          鏈接:segmentfault.com/a/1190000015309366

          1. 日志記錄

          Spring Boot為所有內(nèi)部日志記錄使用Commons Logging,但開放底層日志實現(xiàn),提供了Java Util Logging、Log4J2和Logback的默認配置,在每種情況下,日志記錄器都被預(yù)先配置為使用控制臺輸出,可選的文件輸出也可用。

          默認情況下,如果使用“Starter”,則使用Logback進行日志記錄,還包括適當?shù)腖ogback路由,以確保使用Java Util Logging、Commons Logging、Log4J或SLF4J的依賴庫都能正確工作。

          Java有很多日志框架可用,如果上面的列表看起來很混亂,不要擔(dān)心。一般情況下,你不需要更改日志依賴項,Spring Boot缺省值也可以正常工作。

          1.1 日志格式

          Spring Boot的默認日志輸出類似于以下示例:

          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:?[/*]

          下面是輸出項:

          • 日期和時間:毫秒精度,易于分類。

          • 日志級別:ERROR、WARN、INFO、DEBUG或TRACE。

          • 進程ID。

          • ---分隔符,用于區(qū)分實際日志消息的開始。

          • 線程名稱:用方括號括起來(可能被截斷用于控制臺輸出)。

          • 記錄器名稱:這通常是源類名稱(通常縮寫)。

          • 日志消息。

          Logback沒有FATAL級別,它被映射為ERROR。

          1.2 控制臺輸出

          默認的日志配置會在消息被寫入時向控制臺回顯,默認情況下,ERROR-級別、WARN-級別和INFO-級別的消息將被記錄下來,還可以通過使用--debug標志啟動應(yīng)用程序來啟用“debug”模式。

          $?java?-jar?myapp.jar?--debug

          你還可以在application.properties中指定debug=true。

          啟用調(diào)試模式時,將配置核心日志記錄器(嵌入式容器、Hibernate和Spring Boot)的選擇,以輸出更多信息,啟用調(diào)試模式不會將應(yīng)用程序配置為使用DEBUG級別記錄所有消息。

          或者,你可以啟用“trace”模式,通過使用--trace標志啟動應(yīng)用程序(或在application.properties中trace=true),這樣做可以使trace日志記錄用于選擇核心日志記錄器(嵌入式容器、Hibernate模式生成和整個Spring組合)。

          1.2.1 彩色編碼輸出

          如果你的終端支持ANSI,則使用顏色輸出來幫助提高可讀性,你可以將spring.output.ansi.enabled設(shè)置為支持的值,以覆蓋自動檢測。

          顏色編碼是通過使用%clr轉(zhuǎn)譯符來配置的,在最簡單的形式中,轉(zhuǎn)換器將輸出按照日志級別進行著色,如下面的示例所示:

          %clr(%5p)

          下表描述了日志級別到顏色的映射:

          或者,你也可以通過提供顏色或樣式作為轉(zhuǎn)換的選項來指定應(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

          1.3 文件輸出

          默認情況下,Spring Boot日志只記錄到控制臺,不寫日志文件,如果你想在控制臺輸出之外寫入日志文件,你需要設(shè)置logging.file或logging.path屬性(例如,在你的application.properties中)。

          下表顯示了如何將logging.*屬性結(jié)合使用:

          表26.1. Logging屬性

          日志文件在達到10MB時就會回滾,與控制臺輸出一樣,默認情況下會記錄ERROR-級別、WARN-級別和INFO-級別的消息,可以使用logging.file.max-size屬性更改大小限制,除非logging.file.max-history屬性已被設(shè)置,否則之前回滾的文件將被無限期地歸檔。

          日志系統(tǒng)在應(yīng)用程序生命周期的早期初始化,因此,在通過@PropertySource注解加載的屬性文件中沒有發(fā)現(xiàn)日志屬性。日志記錄屬性獨立于實際的日志記錄基礎(chǔ)設(shè)施,因此,特定的配置鍵(例如Logback的logback.configurationFile)不是由spring Boot管理的。

          1.4 日志級別

          所有受支持的日志系統(tǒng)都可以在Spring Environment中通過使用logging.level.=(例如application.properties)中設(shè)置日志記錄器級別,其中l(wèi)evel為TRACE、DEBUG、INFO、WARN、ERROR、FATAL或OFF,可以使用logging.level.root配置root日志記錄器。

          下面的示例展示了application.properties中可能的日志記錄設(shè)置:

          logging.level.root=WARN
          logging.level.org.springframework.web=DEBUG
          logging.level.org.hibernate=ERROR

          1.5 自定義日志配置

          可以通過在類路徑中包含適當?shù)膸靵砑せ罡鞣N日志系統(tǒng),還可以通過在類路徑的根目錄中或在以下Spring Environment屬性(logging.config)指定的位置中提供合適的配置文件來進一步定制。

          你可以通過使用org.springframework.boot.logging.LoggingSystem來強制Spring Boot使用特定的日志系統(tǒng),值應(yīng)該是LoggingSystem實現(xiàn)的完全限定類名,你還可以完全通過使用none值來禁用Spring Boot的日志配置。

          因為日志是在創(chuàng)建ApplicationContext之前初始化的,無法在Spring @Configuration文件中控制來自@PropertySources的logging,更改日志系統(tǒng)或完全禁用日志系統(tǒng)的唯一方法是通過系統(tǒng)屬性。依賴于你的日志系統(tǒng),加載下列文件:

          如果可能的話,我們建議你對logging配置使用-spring變體(例如,logback-spring.xml而不是logback.xml),如果使用標準配置位置,Spring不能完全控制日志初始化。

          Java Util Logging存在已知的類加載問題,當從“可執(zhí)行jar”運行時,會導(dǎo)致問題,如果可能的話,我們建議你在運行“可執(zhí)行jar”時避免使用它。

          為了幫助定制,一些其他屬性從Spring Environment轉(zhuǎn)移到系統(tǒng)屬性,如下表所示:

          所有支持的日志系統(tǒng)在解析配置文件時都可以參考系統(tǒng)屬性,在spring-boot.jar中看默認配置的例子:

          • Logback?

          • Log4j 2?

          • Java Util logging

          如果希望在logging屬性中使用占位符,你應(yīng)該使用Spring Boot的語法,而不是底層框架的語法,值得注意的是,如果你使用Logback,你應(yīng)該使用:作為屬性名與其默認值之間的分隔符,而不是使用:-。

          你可以通過只覆蓋LOG_LEVEL_PATTERN(或使用Logback的logging.pattern.level)來將MDC和其他特殊內(nèi)容添加到日志行中,例如,如果你使用logging.pattern.level=user:%X{user} %5p,然后,默認的日志格式包含“user”的MDC項,如果存在,如下例所示。

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

          1.6 Logback擴展

          Spring Boot包含許多可以幫助進行高級配置的Logback擴展,你可以在你的logback-spring.xml配置文件使用這些擴展。

          因為標準logback.xml配置文件過早地加載,不能在其中使用擴展,你需要使用logback-spring.xml或定義logging.config屬性。

          不能使用Logback的配置掃描來使用擴展,如果你嘗試這樣做,對配置文件進行更改將導(dǎo)致類似于下面記錄的錯誤之一:

          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]]
          1.6.1 特殊配置文件配置

          通過標簽,你可以根據(jù)激活的Spring配置文件選擇包含或排除配置的部分。在元素中的任何地方都支持配置文件部分,使用name屬性指定哪個配置文件接受配置,可以使用逗號分隔的列表指定多個配置文件,下面的清單顯示了三個示例配置文件:

          "staging">
          ????


          "dev,?staging">
          ????


          "!production">
          ????

          1.6.2 環(huán)境屬性

          通過標記,可以從Spring Environment中公開屬性,以便在Logback中使用,如果你希望在Logback配置中從application.properties文件中訪問值,那么這樣做是很有用的,標簽的工作方式與Logback的標準標簽類似。但是,不是指定直接value,而是指定屬性的source(來自Environment)。如果你需要將屬性存儲在本地范圍之外的其他地方,則可以使用scope屬性,如果需要回退值(如果Environment中沒有設(shè)置屬性),可以使用defaultValue屬性,下面的示例展示了如何在Logback中公開屬性以供使用:

          "context"?name="fluentHost"?source="myapp.fluentd.host"
          ????????defaultValue="localhost"/>
          "FLUENT"?class="ch.qos.logback.more.appenders.DataFluentAppender">
          ????${fluentHost}
          ????...

          必須在連接符形式中指定source(例如my.property-name),但是,可以使用寬松的規(guī)則將屬性添加到Environment中。


          好文章,我在看

          瀏覽 54
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  麻豆三级片 | 大鸡巴插逼视频 | 青春草免费视频 | 亚洲欧美性色图 | 3级片免费网站免费播放无码久久 |