python日志,SpringBoot文檔翻譯系列——26.日志logging

 2023-10-18 阅读 32 评论 0

摘要:原創作品,可以轉載,但是請標注出處地址:http://www.cnblogs.com/V1haoge/p/7613854.html 這是SpringBoot的日志內容 python日志?26 日志   Spring使用CommonLogging作為內置日志記錄工具,但也保留了底層日志的實現。默認的配置提供了Java Util

原創作品,可以轉載,但是請標注出處地址:http://www.cnblogs.com/V1haoge/p/7613854.html

這是SpringBoot的日志內容

python日志?26 日志
  Spring使用CommonLogging作為內置日志記錄工具,但也保留了底層日志的實現。默認的配置提供了Java Util Logging、Log4J2和LogBack。在不同情況下,可以通過預先的配置來選擇控制臺輸出或者文件輸出。
  默認情況下,如果你使用了SpringBoot的"Starters",將會使用LogBack作為日志工具。其擁有適當的回退路由,以確保Java Util Logging、Log4J2和Commons Logging的依賴庫可以正常工作。
  注意:Java擁有許多的日志框架。如果上面的日志工具使你迷惑不堪,請不要擔心。一般情況下,并不需要你更改日志依賴,SpringBoot也會工作的很好。
26.1 日志格式
  SpringBoot的默認日志輸出如下:

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
    • ---——用于區分真正日志信息的分隔符
    • 線程名稱——使用方括號括住(控制臺輸出時可能會被截斷)
    • 日志名稱——資源類名(通常是簡化的)
    • 日志信息

  注意:LogBack工具并沒有FATAL級別(這個級別會被映射到ERROR)
26.2 控制臺輸出
  采用默認的日志配置日志信息將會被輸出到控制臺。默認情況下ERROR、WARN和INFO級別的信息將會被記錄顯示。你也可以通過啟動應用時添加--debug標簽來開啟debug模式。

$ java -jar muapp.jar --debug

follow翻譯、   注意:你也可以在application.properties配置文件中添加debug=true來達到同樣的目的。
  當使用debug模式時,核心記錄器(包括內嵌容器、Hibernate和SpringBoot)被配置用來輸出更多信息。debug模式下并不會配置你的應用來記錄DEBUG級別的所有信息。
或者,你也可以通過類似的兩種方法開啟trace模式,這種模式將會輸出核心記錄器的跟蹤日志。
26.2.1 著色輸出
  如果你的終端支持ANSI,著色輸出的日志信息講可以提升閱讀性。你可以設置spring.output.ansi.enabled為一個合適的值來覆蓋自動的獲取的值。
  顏色編碼使用%clr來進行配置。在最簡單的形式中,轉換器將根據日志級別對輸出進行著色,例如:

%clr(%5p)

  日志級別與著色的匹配關系如下:

Level (日志級別)Color(著色顏色)
FATAL?Red
ERROR?Red
WARN?Yellow
INFO?Green
DEBUG?Green
TRACE?Green


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

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

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

    • blue
    • cyan
    • faint
    • green
    • magenta
    • red
    • yellow

26.3 文件輸出
  默認情況下,SpringBoot只會將日志輸出到控制臺,而不會輸出到文件中。如果你想將日志不只輸出到控制臺,還是輸出到文件中,你需要在application.properties文件中進行logging.file或者logging.path屬性設置。
  下表中顯示了logging.*屬性如何一起來使用:

logging.filelogging.pathExampleDescription
(none)(none)?僅輸出到控制臺
指定文件(none)my.log輸出到指定文件,名稱可以是準確的位置,也可以是相對于當前目錄的
(none)指定目錄/var/log?將spring.log輸出到指定目錄,名稱可以是準確的位置,也可以是相對于當前目錄的

  表26.1 日志屬性

  默認情況下,日志文件會記錄控制臺輸出、ERROR、WARN和INFO級別的日志信息,并且在達到10M的時候重新創建文件來記錄。
  注意:SpringBoot的日志系統在應用程序生命周期的早期就完成初始化,因此通過@PropertiesSource注解加載的配置文件中的屬性將不會起到應有的作用(不生效)。
  注意:日志的屬性與實際的日志基礎結構無關。因此,指定的配置內容(就像LogBack的logback.configurationFile屬性)并沒有被SpringBoot所管理。
26.4 日志級別
  所有支持的日志系統都擁有在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=WARN
2 logging.level.org.springframework.web=DEBUG
3 logging.level.org.hibernate=ERROR

  注意:默認情況下,SpringBoot會重定義Thymeleaf模板INFO信息,以使其可被DEBUG級別的日志所記錄。這有助于減少標準日志輸出中的亂象。有關如何在你的配置中重定義請參照LevelRemappingAppender。
26.5 自定義日志配置
  各類日志系統可被類路徑下的適當的庫所激活,然后被類根路徑下的或者Spring環境中的logging.config屬性所指定的路徑下的適合的配置文件所自定義。
  你可以通過org.springframework.boot.logging.LoggingSystem系統屬性來強制SpringBoot使用某一指定的日志系統。其值為實現LoggingSystem的完全限定名。你也可以為其設置為none來似的日志功能完全失效。
  注意:因為日志系統在ApplicationContext初始化之前就完成了初始化。所以無法通過@Configuration中的@PropertiesSources來控制日志系統。系統屬性和SpringBoot的基本配置文件效用完好。
  基于你的日志系統,以下文件將會被加載:

Logging SystemCustomization(自定義)
LogBack?logback-spring.xml;ogback-spring.groovy;logback.xml;logback.groovy
Log4j2?log4j2-spring.xml;log4j2.xml
JDK (Java Util Logging)logging.properties


  注意:如果可能,我們建議您使用- spring變量來配置日志配置(例如logBack-spring.xml而不是logBack.xml)如果你使用的以往的配置路徑,Spring將不能完整的控制日志的初始化。
  注意:Java Util日志中有一些已知的類加載問題,這些問題在從“可執行jar”中運行時引起問題。我們建議你盡可能避免使用它。
  為了幫助定制,一些其他屬性從Spring環境轉移到系統屬性:

Spring Environment?System PropertyComments(說明)
logging.exception-conversion-wordLOG_EXCEPTION_CONVERSION_WORD?記錄異常時使用的轉換詞
logging.fileLOG_FILE?在默認的日志配置中使用
logging.pathLOG_PATH?在默認的日志配置中使用
logging.pattern.consoleCONSOLE_LOG_PATTERN?用于控制臺日志輸出的日志格式(僅支持默認的LogBack配置)
logging.pattern.fileFILE_LOG_PATTERN?用于文件輸出日志的日志格式(僅支持默認的額LogBack配置)
logging.pattern.levelLOG_LEVEL_PATTERN?用于渲染日志級別的樣式(默認為%5p)(僅支持默認的額LogBack配置)
PID?PID?當前進程ID(在可能的情況下發現并沒有定義為系統環境變量)


  所有支持的日志系統都可以在解析其配置文件時查閱系統屬性。例如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

26.6 LogBack擴展
  SpringBoot為LogBack提供了許多擴展屬性用于高級配置。你可以在你的logback-spring.xml配置文件中使用這些屬性。
  注意:由于logback.xml文件加載的過于早(早于SpringBoot應用的啟動),所以你不能在其中使用這些擴展屬性,你需要使用logBack-spring.xml文件或者logging.config屬性。
  注意:這些擴展屬性無法與LogBack的配置掃描器一起使用(無法被掃描到),如果你嘗試這樣做,你會得到類似于下面的這樣的錯誤記錄:

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

 1 <springProfile name="staging">
 2 <!-- configuration to be enabled when the "staging" profile is active -->
 3 </springProfile>
 4 
 5 <springProfile name="dev, staging">
 6 <!-- configuration to be enabled when the "dev" or "staging" profiles are active -->
 7 </springProfile>
 8 
 9 <springProfile name="!production">
10 <!-- configuration to be enabled when the "production" profile is not active -->
11 </springProfile>

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

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

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

轉載于:https://www.cnblogs.com/V1haoge/p/7613854.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/3/146386.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息