熵增學院-Jacob-你所遺漏的SpringBoot日誌管理知識
Spring Boot對所有內部日誌記錄使用了Commons Logging,但是底層日誌實現是開放的。可以為 Java Util日誌、Log4J2和Logback。對於每種日誌都預先配置為使用控制檯輸出和可選的檔案輸出。預設為Logback
日誌配置
通過將相應的庫新增到classpath可以啟用各種日誌系統,然後在classpath根目錄下提供合適的配置檔案可以進一步定製日誌系統,配置檔案也可以通過Spring Environment的logging.config屬性指定。
以下檔案會根據你選擇的日誌系統進行載入:
日誌系統 | 定製配置 |
---|---|
Logback | logback-spring.xml ,logback-spring.groovy ,logback.xml 或logback.groovy |
Log4j | log4j.properties 或log4j.xml |
Log4j2 | log4j2-spring.xml 或log4j2.xml |
JDK (Java Util Logging) | logging.properties |
注 如果可能的話,建議你使用-spring
logback-spring.xml
而不是logback.xml
)。如果你使用標準的配置路徑,Spring可能不能夠完全控制日誌初始化。
注 Java Util Logging從可執行jar執行時會導致一些已知的類載入問題,我們建議儘可能不使用它。
以下是從Spring Envrionment
轉換為System properties的一些有助於定製的配置屬性:
Spring Environment | System Property | Comments |
---|---|---|
logging.exception-conversion-word |
LOG_EXCEPTION_CONVERSION_WORD |
記錄異常使用的關鍵字 |
logging.file |
LOG_FILE |
如果指定就會在預設的日誌配置中使用 |
logging.path |
LOG_PATH |
如果指定就會在預設的日誌配置中使用 |
logging.pattern.console |
CONSOLE_LOG_PATTERN |
日誌輸出到控制檯(stdout)時使用的模式(只支援預設的logback設定) |
logging.pattern.file |
FILE_LOG_PATTERN |
日誌輸出到檔案時使用的模式(如果LOG_FILE啟用,只支援預設的logback設定) |
logging.pattern.level |
LOG_LEVEL_PATTERN |
用來渲染日誌級別的格式(預設%5p ,只支援預設的logback設定) |
PID |
PID |
當前的處理程序(process)ID(能夠找到,且還沒有用作OS環境變數) |
所有支援的日誌系統在解析配置檔案時都能獲取系統屬性的值,具體可以參考spring-boot.jar
中的預設配置。
log4j2配置
一份史詩級配置
/home/logs/log/dev \ \ \ \
</Appenders>
<Loggers>
<Root level="debug">
<AppenderRef ref="Console"/>
<AppenderRef ref="debug"/>
<AppenderRef ref="info"/>
<AppenderRef ref="warn"/>
<AppenderRef ref="error"/>
</Root>
</Loggers>
-
各個檔案輸出到不同級別的目錄
-
設定最大儲存時間為15天
-
每個檔案最大50M
tomcat的日誌
在properties檔案新增如下配置:
server.tomcat.basedir=/home/logs/log-api/tomcat-logs server.tomcat.accesslog.enabled=true server.tomcat.accesslog.pattern=%t %a "%r" %s %D (%D ms) server.use-forward-headers=true
lombok的神組合
使用lombok的@Slf4j 註解,省去配置宣告log的繁瑣,提高開發效率。
idea的 grep console組合
Grep Console 自定義設定控制檯輸出顏色,這樣控制檯就能比較明顯的看到警告或者錯誤的資訊,方便查詢問題
視訊:https://space.bilibili.com/313762729/#/