1. 程式人生 > 其它 >SpringBoot的logback日誌分級、讀取外部logback配置

SpringBoot的logback日誌分級、讀取外部logback配置

1. 最近需要獨立記錄各個級別的日誌,以下是個人SpringBoot的Logback.xml的配置

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds">
    <!--定義日誌檔案的儲存地址 勿在 LogBack 的配置中使用相對路徑-->
    <property name="log.home" value="logs"/>

    <!-- 控制檯輸出 -->
    <appender name
="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <layout class="ch.qos.logback.classic.PatternLayout"> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%boldYellow(%thread)] %highlight(%-5level) %boldGreen(%logger{50}) - %msg%n </pattern> </layout
> </appender> <!--輸出DEBUG日誌--> <appender name="DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${log.home}/debug/project-name-debug.%d{yyyy-MM-dd}.log</
fileNamePattern> </rollingPolicy> <append>true</append> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern> <charset>utf-8</charset> </encoder> <filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印DEBUG日誌 --> <level>DEBUG</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!--輸出INFO日誌--> <appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${log.home}/info/project-name-info.%d{yyyy-MM-dd}.log</fileNamePattern> </rollingPolicy> <append>true</append> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern> <charset>utf-8</charset> </encoder> <filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印INFO日誌 --> <level>INFO</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!--輸出ERROR日誌--> <appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${log.home}/error/project-name-error.%d{yyyy-MM-dd}.log</fileNamePattern> </rollingPolicy> <append>true</append> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern> <charset>utf-8</charset> </encoder> <filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印ERROR日誌 --> <level>ERROR</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!--輸出WARN日誌--> <appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${log.home}/warn/project-name-warn.%d{yyyy-MM-dd}.log</fileNamePattern> </rollingPolicy> <append>true</append> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern> <charset>utf-8</charset> </encoder> <filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印WARN日誌 --> <level>WARN</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- 日誌輸出級別 ERROR/WARN/INFO/DEBUG 推薦使用INFO--> <root level="INFO"> <appender-ref ref="STDOUT"/> <appender-ref ref="DEBUG"/> <appender-ref ref="INFO"/> <appender-ref ref="ERROR"/> <appender-ref ref="WARN"/> </root> </configuration>

2. 我這個專案Logback.xml配置在專案外的config資料夾中,SpringBoot的預設讀取機制是讀取不到的,需要在啟動命令中加入以下引數

java -jar -Dlogging.config=./config/logback.xml ./包名.jar &