SpringBoot使用Commons Logging進行全部內部日誌記錄,但保留底層日誌實現。默認提供了Java Util Logging,Log4j2和Logback日誌配置。在每種狀況下,都預先配置爲使用控制檯輸出,而且還提供了可選的文件輸出。(來自官網)html
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
Logback中沒有FATAL(致命)級別,它被映射到ERROR級別spring
(日誌格式來自官網)apache
SpringBoot控制檯輸出默認支持三種日誌級別:ERROR,WARN和INFOapi
若是還想輸出別的級別日誌,例如DEBUG或TRACE(只能二選一),以下操做:bash
$ java -jar myapp.jar -- debug
說明:使用debug調試模式啓動應用程序不會將應用程序配置爲使用DEBUG級別記錄日誌。
複製代碼
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默認配置日誌只會輸出到控制檯,並不會記錄到文件中,但一般生產環境須要把日誌記錄到文件中。
配置屬性以下:
日誌文件在達到10 MB時滾動輸出,而且與控制檯輸出同樣,默認狀況下會記錄ERROR,WARN和INFO級別的日誌。可使用logging.file.max-size屬性更改大小限制。除非已設置logging.file.max-history屬性,不然之前輪換的日誌文件將被無限期歸檔。(來自官網)
注意點:
- 日誌記錄系統在應用程序生命週期的早期初始化。所以,在經過@PropertySource註解加載的屬性文件中找不到日誌記錄屬性。
- 日誌記錄屬性獨立於實際的日誌記錄基礎結構。所以,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
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…