almost 6 years ago
SpringBoot 內的 logback 使用上很方便,但是他並沒有針對不同日期與檔案大小來切割,實務上很難處理,不過
你可以建立 logback-spring.xml 檔案來客製化 logback,特別注意 logback-spring.xml 才可以吃到 Spring 的變數喔
logback.xml 無法用 spring 的變數
<?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 搬過來的,所以使用上沒有改變
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' 關閉,記得要給單引號喔