4 months ago

SpringBoot 內的 logback 使用上很方便,但是他並沒有針對不同日期與檔案大小來切割,實務上很難處理,不過

你可以建立 logback-spring.xml 檔案來客製化 logback,特別注意 logback-spring.xml 才可以吃到 Spring 的變數喔
logback.xml 無法用 spring 的變數

logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!--其他配置參考 https://github.com/spring-projects/spring-boot/tree/master/spring-boot/src/main/resources/org/springframework/boot/logging/logback -->
    <!--include resource="org/springframework/boot/logging/logback/defaults.xml" /-->
    <!--include resource="org/springframework/boot/logging/logback/console-appender.xml" /-->
    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
    <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
    <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
    <property name="FILE_LOG_PATTERN" value="${FILE_LOG_PATTERN:-%d{yyyy-MM-dd HH:mm:ss.SSS} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- [%t] %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
    <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
    <!--property name="logFile" value="${LOG_FILE}"/-->
    <property name="LOG_ENCODING" value="UTF-8"/>

    <appender name="TIME_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <encoder>
            <pattern>${FILE_LOG_PATTERN}</pattern>
            <charset>${LOG_ENCODING}</charset>
        </encoder>
        <file>${LOG_FILE}</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}.%i</fileNamePattern>
            <maxHistory>365</maxHistory>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
    </appender>
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
            <charset>${LOG_ENCODING}</charset>
        </encoder>
    </appender>
    <!-- 原本的 logback 配置等級方式,現在可在 application.yml 改改參數就可以了 -->
    <!--
    <logger name="org.springframework" level="DEBUG"/>
    <logger name="com.ps" level="DEBUG"/>
    -->
    <root level="${logging.level.root}">
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="TIME_FILE"/>
    </root>
</configuration>

log 的格式都是從原本的 boot/logging/logback/defaults.xml 搬過來的,所以使用上沒有改變

application.yml
logging:

  file: D:/logs/auth-dev.log

  level:

    root: Info

    org.springframework: info

    com.ps: debug

    com.xxx.ooo.spring: 'OFF'

配置上只需配置 file,不要配置 path 啊!!
這邊加了 logging.level.root 會在 logback-spring.xml 使用到
另外可以配置不同 package 的 log 等級
如果完全不需要的 可用 'OFF' 關閉,記得要給單引號喔

參考來源
设置spring-boot的logging

← 開發工具發生找不到套件問題 Windows 發生檔案鎖死 →
 
comments powered by Disqus