天天看點

你所遺漏的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 目前的處理程序(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>           
  1. 各個檔案輸出到不同級别的目錄
  2. 設定最大儲存時間為15天
  3. 每個檔案最大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 自定義設定控制台輸出顔色,這樣控制台就能比較明顯的看到警告或者錯誤的資訊,友善查找問題

本文來自雲栖社群合作夥伴“開源中國”

本文作者:melon_jj

原文連結