Spring Boot 之 LogBack 配置

本文爲[原創]文章,轉載請標明出處。
原文連接: https://weyunx.com/2019/02/01...
原文出自 微雲的技術博客

LogBack 默認集成在 Spring Boot 中,是基於 Slf4j 的日誌框架。默認狀況下 Spring Boot 是以 INFO 級別輸出到控制檯。html

它的日誌級別是:java

ALL < TRACE < DEBUG < INFO < WARN < ERROR < OFF

配置

LogBack 能夠直接在 application.propertiesapplication.yml 中配置,但僅支持一些簡單的配置,複雜的文件輸出仍是須要配置在 xml 配置文件中。配置文件可命名爲 logback.xml , LogBack 自動會在 classpath 的根目錄下搜索配置文件,不過 Spring Boot 建議命名爲 logback-spring.xml,這樣會自動引入 Spring Boot 一些擴展功能。git

若是須要引入自定義名稱的配置文件,須要在 Spring Boot 的配置文件中指定,如:github

logging:
  config: classpath:logback-spring.xml

同時 Spring Boot 提供了一個默認的 base.xml 配置,能夠按照以下方式引入:spring

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/base.xml"/>
</configuration>

base.xml 提供了一些基本的默認配置以及在控制檯輸出時的關鍵字配色,具體文件內容能夠看這裏,能夠查看到一些經常使用的配置寫法。springboot

詳細配置

變量

能夠使用 <property> 來定義變量:app

<property name="log.path" value="/var/logs/application" />

同時能夠引入 Spring 的環境變量:框架

<property resource="application.yml" />
<property resource="application.properties" />

推薦使用 <springProperty>,相比 <property> 提供了 scopedefaultValuespring-boot

<springProperty scope="context" name="fluentHost" source="myapp.fluentd.host"
        defaultValue="localhost"/>

全部的變量均可以經過 ${} 來調用。spa

輸出到控制檯

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%.-1level|%-40.40logger{0}|%msg%n</pattern>
    </encoder>
  </appender>
 
  <logger name="com.mycompany.myapp" level="debug" />
  <logger name="org.springframework" level="info" />
  <logger name="org.springframework.beans" level="debug" />
 
  <root level="warn">
    <appender-ref ref="console" />
  </root>
</configuration>

輸出到文件

<property name="LOG_FILE" value="LogFile" />
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${LOG_FILE}.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <!-- 每日歸檔日誌文件 -->
        <fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}.gz</fileNamePattern>
        <!-- 保留 30 天的歸檔日誌文件 -->
        <maxHistory>30</maxHistory>
        <!-- 日誌文件上限 3G,超事後會刪除舊的歸檔日誌文件 -->
        <totalSizeCap>3GB</totalSizeCap>
    </rollingPolicy>
    <encoder>
        <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
    </encoder>
</appender>

多環境配置

LogBack 一樣支持多環境配置,如 devtestprod

<springProfile name="dev">
    <logger name="com.mycompany.myapp" level="debug"/>
</springProfile>

啓動的時候 java -jar xxx.jar --spring.profiles.active=dev 便可使配置生效。

若是要使用 Spring 擴展的 profile 支持,配置文件名必須命名爲 LogBack_Spring.xml,此時當 application.properties 中指定爲 spring.profiles.active=dev 時,上述配置纔會生效。

參考

相關文章
相關標籤/搜索