首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Spring Boot 日志系統完整配置指南:默認格式、輸出控制與自定義配置

     編輯:Java 綜合教學

Spring Boot 日志系統完整配置指南:默認格式、輸出控制與自定義配置

Spring Boot 內部使用 Commons Logging,但開放底層實現(Java Util Logging、Log4j2、Logback、SLF4J)。默認採用 Logback,預配置控制台輸出,可選文件輸出。本文詳解默認格式、級別控制、文件輪轉及自定義配置文件加載機制。

1. 默認日志輸出格式

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
進程 IDPID
分隔符--- 標識日志信息開始
線程名方括號包裹,如 [main]
日志名通常為源類名縮寫
日志信息具體內容

2. 控制台輸出默認級別

默認記錄 ERROR、WARN、INFO 級別,DEBUG/TRACE 需顯式開啟。

3. 文件輸出配置

默認不寫文件,需在 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)。

4. 日志級別動態調整

在 application.properties 通過 logging.level.* 精確控制:

日志框架默認配置文件自定義屬性
Logbacklogback.xmllogging.config=classpath:custom-logback.xml
Log4j2log4j2.xmllogging.config=classpath:custom-log4j2.xml
Java Util Logginglogging.propertieslogging.config=classpath:custom.properties


關鍵限制

  • 日志系統在 ApplicationContext 創建之前初始化
  • 不能在 @Configuration 類中通過 @PropertySource 控制日志配置
  • 系統屬性、命令行參數、標準 Spring Boot 外部配置(application.properties、環境變量)均有效

6. 環境屬性映射到系統屬性(供配置文件引用)

Spring Boot 自動將以下屬性轉為系統屬性,可在 Logback/Log4j2 配置中使用 ${PID} 等佔位符:

環境屬性系統屬性
spring.application.nameLOG_FILE
logging.pathLOG_PATH
PIDPID

7. 重要注意事項

  • 可執行 JAR 運行時:Java Util Logging 存在類加載問題,建議避免使用
  • 依賴管理:使用 Starter POMs 會自動引入 logback-classic、jcl-over-slf4j、jul-to-slf4j、log4j-over-slf4j 確保統一路由
  • 生產環境建議:配置異步日志(AsyncAppender)、錯誤級別單獨文件、保留天數策略

8. 典型生產配置片段

# 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
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved