Spring Boot使用Apache的通用日誌接口Commons Logging作爲所有內部日誌記錄器,但是具體實現選擇不做要求,默認配置對java.util.Logging,Log4J2和Logback支持。每種日誌記錄器都默認預配置爲控制檯輸出,但輸出到文件亦可用。
通常情況下,如果你使用的是”starters”,LogBack爲默認日誌輸出工具,同時包含Logback routing以確保使用Java Util Logging,Common Logging,Log4J 或者 SLF4J的其他依賴庫能夠正常工作。
日誌輸出格式
Spring Boot默認的日誌輸出如下:
2017-09-07 15:46:51.112 INFO 45469 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/7.0.52
2017-09-07 15:46:51.112 INFO 45469 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring Embedded WebApplicationContext
輸出格式如下:
- Date and Time:毫秒級的日期時間
- Log Level:日誌輸出級別
- Process ID:進程號
- — :與真正日誌輸出的分隔
- Thread name:線程名稱,以[]括起來部分
- Logger name:日誌發生的類
- Message:日誌信息
注:Logback沒有FATAL日誌級別,合併於ERROR。
控制檯輸出
Spring Boot默認配置將日誌打印在控制檯上,ERROR,WARN,INFO級別的日誌默認輸出。你也可以以debug模式啓動你的項目,如下:
$ java -jar myapp.jar --debug
注:也可以通過在application.properties文件中加入debug=true實現以debug模式啓動項目。
當以debug模式啓動時,核心日誌記錄器(內嵌的容器,Hibernate和Spring Boot)等會配置爲輸出更多的信息,但是以debug模式啓動並不意味着配置你的項目輸出所有DEBUG級別的日誌信息。
另外,Spring Boot支持高亮輸出,如在application.properties中添加如下內容:
spring.output.ansi.enabled=ALWAYS
文件輸出
默認情況下,Spring Boot只向控制檯輸出日誌,而不會在文件中記錄日誌,如果要將日誌記錄到文件中,需要設置logging.file或者logging.path屬性到application.properties文件中。
其中logging.file,用於指定日誌文件的名稱,在logging.path未指定時,可以是含(絕對或者相當當前文件的)路徑的文件名。反之,亦然。
輸出日誌到文件時,日誌文件默認最大10MB,同控制檯一樣默認輸出ERROR,WARN,INFO級別的日誌。
注:由於日誌系統在Spring Boot應用生命週期中初始化的早,配置在@PropertySource註解加載的文件中的日誌屬性是無效的。
日誌級別
所有被支持的日誌系統可以在Spring的環境變量中配置其日誌級別,如在application.properties文件中指定。
logging.level.root=WARN
logging.level.org.springframework.web=DEBUG
logging.level.org.hibernate=ERROR
訂製日誌配置
可以通過在classpath中包含對應的庫的方式激活對應的日誌系統,或者提供適當的配置文件進一步做日誌訂製。如果配置文件非classpath下,需通過logging.config屬性指定。
你可以強制Spring Boot使用某一種日誌系統,通過org.springframework.boot.logging.LoggingSystem屬性指定,指定的值需要爲class實現的全名,如果指定爲none,則爲禁用Spring Boot的全部日誌配置。
如果指定日誌系統爲Logback,對應配置文件可爲logback-spring.xml,logback-spring.groovy,logback.xml,logback.groovy;如果指定日誌系統爲Log4j2,對應配置文件應爲log4j2-spring.xml,log4j2.xml;如果指定日誌系統爲Java Util Logging,對應配置文件爲logging.properties。
如果可能,推薦使用-spring格式日誌配置文件名,如命名爲logback-spring.xml而不是logback.xml。如果使用標準配置位置,Spring不能完全控制日誌系統的初始化。
關於日誌配置的幾個Spring環境變量:
- logging.exception-conversion-word:用於記錄異常時用的轉換詞。
- logging.file:如果指定,則做爲日誌配置的默認配置。
- logging.path:如果指定,則做爲日誌配置的默認配置。
- logging.pattern.console:指定輸出到控制檯的日誌格式,僅支持默認的logback配置。