SpringBoot項目集成日誌

SpringBoot使用Commons Logging進行全部內部日誌記錄,但保留底層日誌實現。默認提供了Java Util LoggingLog4j2Logback日誌配置。在每種狀況下,都預先配置爲使用控制檯輸出,而且還提供了可選的文件輸出。(來自官網)html

SpringBoot默認提供的三種日誌配置實現

日誌格式

SpringBoot默認的日誌輸出以下所示:java

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: [/*]
複製代碼

輸出如下項目:web

  • 日期和時間:毫秒精度而且容易排序
  • 日誌級別:ERROR, WARN, INFO, DEBUG, TRACE
  • 進程ID
  • --- 分隔符來區分實際日誌的開始
  • 線程名:括在方括號中(可能會被截斷)
  • 日誌記錄器名:這一般是源類名(一般縮寫)
  • 日誌信息

Logback中沒有FATAL(致命)級別,它被映射到ERROR級別spring

日誌格式來自官網apache

控制檯輸出

SpringBoot控制檯輸出默認支持三種日誌級別:ERROR,WARN和INFOapi

若是還想輸出別的級別日誌,例如DEBUG或TRACE(只能二選一),以下操做:bash

  • 啓動應用程序時,增長--debug或--trace標誌
    $ java -jar myapp.jar -- debug
    
    說明:使用debug調試模式啓動應用程序不會將應用程序配置爲使用DEBUG級別記錄日誌。
    複製代碼
  • 在application.yml中(或application.properties中)增長debug: true或trace: true(或debug=true/trace=true)

    application.yml文件:oracle

    debug: true
    複製代碼

    application.properties文件:app

    debug=true
    複製代碼

多彩輸出:

若是終端支持ANSI(表示顏色),能夠設置彩色輸出。ide

application.yml中設置:

# 檢查終端是否支持ANSI,是的話就採用彩色輸出
spring:
  output:
    ansi:
      enabled: detect
複製代碼

application.properties中設置:

# 檢查終端是否支持ANSI,是的話就採用彩色輸出
spring.output.ansi.enabled=detect
複製代碼

文件輸出

SpringBoot默認配置日誌只會輸出到控制檯,並不會記錄到文件中,但一般生產環境須要把日誌記錄到文件中。

配置屬性以下:

  • logging.file: 設置日誌輸出文件,絕對路徑或相對路徑均可以。
  • logging.path: 設置日誌輸出目錄,會在該目錄下建立spring.log文件,並寫入日誌內容。

日誌文件在達到10 MB時滾動輸出,而且與控制檯輸出同樣,默認狀況下會記錄ERROR,WARN和INFO級別的日誌。可使用logging.file.max-size屬性更改大小限制。除非已設置logging.file.max-history屬性,不然之前輪換的日誌文件將被無限期歸檔。(來自官網)

注意點:

  1. 日誌記錄系統在應用程序生命週期的早期初始化。所以,在經過@PropertySource註解加載的屬性文件中找不到日誌記錄屬性。
  2. 日誌記錄屬性獨立於實際的日誌記錄基礎結構。所以,SpringBoot無論理特定的配置密鑰(例如Logback的logback.configurationFile)。 (來自官網)

application.yml中設置:

logging:
  # 設置相對路徑的日誌輸出文件
  file: log/my.log
  # 設置日誌輸出路徑,默認會生成log/spring.log日誌文件
  path: log
  
logging:
  # 設置絕對路徑的日誌輸出文件
  file: D:\ideaProjects\SpringBootDemo\log1\mylog1.log
  # 設置日誌輸出路徑,默認會生成log/spring.log日誌文件
  path: log
複製代碼

application.properties中設置:

logging.file=log/my.log
logging.path=log
複製代碼

日誌文件輸出

級別控制

配置屬性格式:logging.level.*=LEVEL

  • logging.level: 日誌級別控制前綴,*爲包名或Logger名
  • LEVEL: 選項TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF

application.yml中設置:

logging:
  level:
    # com.example.demo包下全部class以DEBUG級別輸出
    com.example.demo: DEBUG
    # root日誌以INFO級別輸出
    root: INFO
    
說明:
配置日誌級別值大小寫都可,例如:設置成debug/info    
複製代碼

application.properties中設置:

logging.level.com.example.demo=DEBUG
logging.level.root=INFO

說明:
配置日誌級別值大小寫都可,例如:設置成debug/info
複製代碼

刨根問底,死磕本身(選看)

1. 日誌級別設置選項

源碼中系統日誌級別是個枚舉類,列出了全部日誌級別,以下截圖:

日誌級別

根據在application.yml中設置的LEVEL值,匹配系統日誌枚舉類,最終設置系統相應包下的日誌級別。

配置值匹配系統日誌枚舉類

SpringBoot官網: docs.spring.io/spring-boot…

相關文章
相關標籤/搜索