Spring Boot 內部使用 Commons Logging,但開放底層實現(Java Util Logging、Log4j2、Logback、SLF4J)。默認採用 Logback,預配置控制台輸出,可選文件輸出。本文詳解默認格式、級別控制、文件輪轉及自定義配置文件加載機制。
2014-03-05 10:57:51.112 INFO 45469 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/
| 節點 | 說明 |
|---|---|
| 日期時間 | 精確到毫秒,易排序 |
| 日志級別 | ERROR, WARN, INFO, DEBUG, TRACE |
| 進程 ID | PID |
| 分隔符 | --- 標識日志信息開始 |
| 線程名 | 方括號包裹,如 [main] |
| 日志名 | 通常為源類名縮寫 |
| 日志信息 | 具體內容 |
默認記錄 ERROR、WARN、INFO 級別,DEBUG/TRACE 需顯式開啟。
默認不寫文件,需在 application.properties 設置:
# 單獨設置文件名(當前目錄) logging.file=myapp.log # 或設置目錄(自動生成 spring.log) logging.path=/var/logs # 組合效果 logging.path=/var/logs logging.file=myapp.log → 實際路徑 /var/logs/myapp.log
輪轉策略:文件達 10MB 自動分割,默認級別同控制台(ERROR/WARN/INFO)。
在 application.properties 通過 logging.level.* 精確控制:
日志框架 默認配置文件 自定義屬性 Logback logback.xml logging.config=classpath:custom-logback.xml Log4j2 log4j2.xml logging.config=classpath:custom-log4j2.xml Java Util Logging logging.properties logging.config=classpath:custom.properties 關鍵限制
ApplicationContext 創建之前初始化@Configuration 類中通過 @PropertySource 控制日志配置Spring Boot 自動將以下屬性轉為系統屬性,可在 Logback/Log4j2 配置中使用 ${PID} 等佔位符:
| 環境屬性 | 系統屬性 |
|---|---|
| spring.application.name | LOG_FILE |
| logging.path | LOG_PATH |
| PID | PID |
logback-classic、jcl-over-slf4j、jul-to-slf4j、log4j-over-slf4j 確保統一路由AsyncAppender)、錯誤級別單獨文件、保留天數策略# application.properties
logging.level.root=INFO
logging.level.com.myapp=DEBUG
logging.path=/var/log/myapp
logging.file=${logging.path}/application.log
logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
logging.pattern.console=%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%-5level) %clr(${PID}){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %msg%n