一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

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

 昵稱10087950 2022-07-28 發(fā)布于江蘇

作者:博弈

鏈接:segmentfault.com/a/1190000015309366

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)日志輸出類似于以下示例:

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í)間:毫秒精度,易于分類。

  • 日志級(jí)別:ERROR、WARN、INFO、DEBUG或TRACE。

  • 進(jìn)程ID。

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

  • 線程名稱:用方括號(hào)括起來(lái)(可能被截?cái)嘤糜诳刂婆_(tái)輸出)。

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

  • 日志消息。

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”模式。

$ java -jar myapp.jar --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)行著色,如下面的示例所示:

%clr(%5p)

下表描述了日志級(jí)別到顏色的映射:圖片

或者,你也可以通過(guò)提供顏色或樣式作為轉(zhuǎn)換的選項(xiàng)來(lái)指定應(yīng)該使用的顏色或樣式,例如,要使文本變?yōu)辄S色,請(qǐng)使用以下設(shè)置:

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

支持以下顏色和風(fēng)格:

  • blue 

  • cyan 

  • faint

  • green

  • magenta 

  • red 

  • yellow

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è)置日志記錄器級(jí)別,其中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 自定義日志配置

可以通過(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)配置的例子:

  • Logback 

  • Log4j 2 

  • Java Util logging

如果希望在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),如果存在,如下例所示。

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

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ò)誤之一:

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

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

<springProfile name="staging">
    <!-- configuration to be enabled when the "staging" profile is active -->
</springProfile>

<springProfile name="dev, staging">
    <!-- configuration to be enabled when the "dev" or "staging" profiles are active -->
</springProfile>

<springProfile name="!production">
    <!-- configuration to be enabled when the "production" profile is not active -->
</springProfile>
1.6.2 環(huán)境屬性

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

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

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

好文章,我在看

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    又黄又爽禁片视频在线观看| 99热在线精品视频观看| 免费国产成人性生活生活片| 自拍偷拍福利视频在线观看| 内射精品欧美一区二区三区久久久 | 欧美精品久久99九九| 蜜桃臀欧美日韩国产精品| 99久久精品国产麻豆| 国产传媒一区二区三区| 激情丁香激情五月婷婷| 国产成人精品资源在线观看| 国产麻豆成人精品区在线观看| 国产成人亚洲综合色就色| 国产免费一区二区不卡| 欧美区一区二在线播放| 欧美中文日韩一区久久| 国产黑人一区二区三区| 亚洲精品中文字幕无限乱码| 国产精品白丝久久av| 高中女厕偷拍一区二区三区| 亚洲一区二区三区四区性色av| 日韩一区二区三区在线欧洲| 日韩欧美一区二区亚洲| 国产精品亚洲一区二区| 欧美综合色婷婷欧美激情| 国产精品一级香蕉一区| 人妻少妇av中文字幕乱码高清| 国产成人精品一区在线观看| 熟女少妇一区二区三区蜜桃| 欧美三级精品在线观看| 高清国产日韩欧美熟女| 空之色水之色在线播放| 日韩女优精品一区二区三区| 草草夜色精品国产噜噜竹菊| 69久久精品亚洲一区二区| 欧美一区二区黑人在线| 色老汉在线视频免费亚欧| 亚洲中文字幕亲近伦片| 亚洲国产综合久久天堂| 黄色国产自拍在线观看| 老外那个很粗大做起来很爽|