1.日志
Spring Boot內部日志系統使用的是Commons Logging,但開放底層的日志實現。默認為會Java Util Logging, Log4J, Log4J2和Logback提供配置。每種情況下都會預先配置使用控制台輸出,也可以使用可選的文件輸出。
默認情況下,如果你使用'Starter POMs',那麼就會使用Logback記錄日志。為了確保那些使用Java Util Logging, Commons Logging, Log4J或SLF4J的依賴庫能夠正常工作,正確的Logback路由也被包含進來。
注:如果上面的列表看起來令人困惑,不要擔心,Java有很多可用的日志框架。通常,你不需要改變日志依賴,Spring Boot默認的就能很好的工作。
2.日志格式
Spring Boot默認的日志輸出格式如下:
2014-03-05 10:57:51.112 INFO 45469 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/
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
2014-03-05 10:57:51.698 INFO 45469 --- [ost-startStop-1] o.s.b.c.e.ServletRegistrationBean : Mapping servlet: 'dispatcherServlet'
2014-03-05 10:57:51.702 INFO 45469 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean : Mapping filter: '
輸出的節點(items)如下
1. 日期和時間 - 精確到毫秒,且易於排序。
2. 日志級別 - ERROR, WARN, INFO, DEBUG 或 TRACE。
3. Process ID。
4. 一個用於區分實際日志信息開頭的---分隔符。
5. 線程名 - 包括在方括號中(控制台輸出可能會被截斷)。
6. 日志名 - 通常是源class的類名(縮寫)。
7. 日志信息。
3.控制台輸出
默認的日志配置會在寫日志消息時將它們回顯到控制台。默認,ERROR, WARN和INFO級別的消息會被記錄
4.文件輸出
默認情況下,Spring Boot只會將日志記錄到控制台而不會寫進日志文件。如果除了輸出到控制台你還想寫入到日志文件,那你需要設置 logging.file 或 logging.path 屬性(例如在你的application.properties中)
下表顯示如何組合使用 logging.* :
日志文件每達到10M就會被輪換(分割),和控制台一樣,默認記錄ERROR, WARN和INFO級別的信息。
5.日志級別
所有支持的日志系統在Spring的Environment(例如在application.properties裡)都有通過'logging.level.*=LEVEL'('LEVEL'是TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF中的一個)設置的日志級別。
示例:application.properties
logging.level.org.springframework.web: DEBUG
logging.level.org.hibernate: ERROR
6.自定義日志配置
通過將適當的庫添加到classpath,可以激活各種日志系統。然後在classpath的根目錄(root)或通過Spring Environment的 logging.config 屬性指定的位置提供一個合適的配置文件來達到進一步的定制(注意由於日志是在ApplicationContext被創建之前初始化的,所以不可能在Spring的@Configuration文件中,通過@PropertySources控制日志。系統屬性和平常的Spring Boot外部配置文件能正常工作)。根據你的日志系統,下面的文件會被加載:
為了幫助定制一些其他的屬性,從Spring的Envrionment轉換到系統屬性:
所有支持的日志系統在解析它們的配置文件時都能查詢系統屬性。具體可以參考spring-boot.jar中的默認配置。
注:在運行可執行的jar時,Java Util Logging有類加載問題,我們建議你盡可能避免使用它。