1. 程式人生 > >spring-boot配置slf4j日誌

spring-boot配置slf4j日誌

SLF4J,即簡單日誌門面(Simple Logging Facade for Java),不是具體的日誌解決方案,它只服務於各種各樣的日誌系統。按照官方的說法,SLF4J 是一個用於日誌系統的簡單 Facade,允許終端使用者在部署其應用時使用其所希望的日誌系統。

spring-boot內部已經集成了slf4j,所以我們只要對slf4j做下簡單的配置即可:

首先我們需要一個檔案用來做日誌相關的配置:

logback.xml:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <!-- 格式化輸出:%date表示日期,%thread表示執行緒名,%-5level:級別從左顯示5個字元寬度 %msg:日誌訊息,%n是換行符-->
    <property name="LOG_PATTERN" value="%date{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n" />
    <!-- 定義日誌儲存的路徑,不要配置相對路徑 -->
    <property name="FILE_PATH" value="E:/logs/demo.%d{yyyy-MM-dd}.%i.log" />

    <!-- 控制檯輸出日誌 -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <!-- 按照上面配置的LOG_PATTERN來列印日誌 -->
            <pattern>${LOG_PATTERN}</pattern>
        </encoder>
    </appender>

    <!--每天生成一個日誌檔案,儲存15天的日誌檔案。rollingFile是用來切分檔案的 -->
    <appender name="FILE"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${FILE_PATH}</fileNamePattern>
            <!-- keep 15 days' worth of history -->
            <maxHistory>15</maxHistory>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <!-- 日誌檔案的最大大小 -->
                <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>

        <encoder>
            <pattern>${LOG_PATTERN}</pattern>
        </encoder>
    </appender>
    <!-- project default level -->
    <logger name="com.ruifeng.demo" level="INFO" />

    <!-- 日誌輸出級別 常用的日誌級別按照從高到低依次為:ERROR、WARN、INFO、DEBUG。 -->
    <root level="INFO">
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="FILE" />
    </root>
</configuration>

然後在application中指定配置檔案的位置:

#Slf4j日誌列印
logging:
  config: src/main/resources/logback.xml
  #level: com.ruifeng.demo.dao:trace

logging.level 用來指定具體的 Mapper 中日誌的輸出級別,上面的配置表示 com.ruifeng.demo.dao 包下的所有 Mapper 日誌輸出級別為 Trace,會將操作資料庫的 SQL 打印出來。開發時設定成 trace 方便定位問題,在生產環境上,將這個日誌級別再設定成 error 級別即可.

配置完成後我們想在哪裡用直接用就好了:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Test {
    private static final Logger logger = LoggerFactory.getLogger(Test.class);
    // ……
}