Springboot整合logback日誌系統
阿新 • • 發佈:2021-08-13
1.建立logback-spring.xml檔案
<?xml version="1.0" encoding="UTF-8"?> <configuration scan="true" scanPeriod="60 seconds"> <!-- 檔案最大儲存歷史數量 --> <property name="MAX_HISTORY" value="30"/> <!-- 檔案最大尺寸 --> <property name="MAX_FILE_SIZE" value="10MB"/> <!-- 控制檯日誌輸出樣式 --> <property name="CONSOLE_LOG_PATTERN" value="%date{yyyy-MM-dd HH:mm:ss} | %highlight(%-5level) | %boldYellow(%thread) | %boldGreen(%logger) | %msg%n"/> <!-- 檔案日誌輸出樣式 --> <property name="FILE_LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n"/> <!-- 控制檯設定 --> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>${CONSOLE_LOG_PATTERN}</pattern> </encoder> </appender> <!-- INFO --> <appender name="infoAppender" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 檔案路徑 ,注意LOG_PATH是預設值, 它的配置對應application.yml裡的logging.file.path值--> <!--<file>${LOG_PATH}/firstDemo_info.log</file>--> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <!-- 檔名稱 --> <fileNamePattern>${LOG_PATH}/firstDemo_%d{yyyy-MM-dd}_info.%i.log</fileNamePattern> <maxFileSize>${MAX_FILE_SIZE}</maxFileSize> <maxHistory>${MAX_HISTORY}</maxHistory> </rollingPolicy> <!--日誌檔案輸出格式--> <encoder> <pattern>${FILE_LOG_PATTERN}</pattern> <charset>UTF-8</charset> <!-- 此處設定字符集 --> </encoder> <!-- 此日誌檔案只記錄info級別的 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>info</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- DEBUG --> <appender name="debugAppender" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!--<file>${LOG_PATH}/firstDemo_debug.log</file>--> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <!-- 檔名稱 --> <fileNamePattern>${LOG_PATH}/firstDemo_%d{yyyy-MM-dd}_debug.%i.log</fileNamePattern> <maxFileSize>${MAX_FILE_SIZE}</maxFileSize> <maxHistory>${MAX_HISTORY}</maxHistory> </rollingPolicy> <!--日誌檔案輸出格式--> <encoder> <pattern>${FILE_LOG_PATTERN}</pattern> <charset>UTF-8</charset> <!-- 此處設定字符集 --> </encoder> <!-- 此日誌檔案只記錄warn級別的 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>debug</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- WARN --> <appender name="warnAppender" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!--<file>${LOG_PATH}/firstDemo_warn.log</file>--> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <!-- 檔名稱 --> <fileNamePattern>${LOG_PATH}/firstDemo_%d{yyyy-MM-dd}_warn.%i.log </fileNamePattern> <maxFileSize>${MAX_FILE_SIZE}</maxFileSize> <maxHistory>${MAX_HISTORY}</maxHistory> </rollingPolicy> <!--日誌檔案輸出格式--> <encoder> <pattern>${FILE_LOG_PATTERN}</pattern> <charset>UTF-8</charset> <!-- 此處設定字符集 --> </encoder> <!-- 此日誌檔案只記錄warn級別的 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>warn</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- ERROR --> <appender name="errorAppender" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!--<file>${LOG_PATH}/firstDemo_error.log</file>--> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <!-- 檔名稱 --> <fileNamePattern>${LOG_PATH}/firstDemo_%d{yyyy-MM-dd}_error.%i.log </fileNamePattern> <maxFileSize>${MAX_FILE_SIZE}</maxFileSize> <maxHistory>${MAX_HISTORY}</maxHistory> </rollingPolicy> <!--日誌檔案輸出格式--> <encoder> <pattern>${FILE_LOG_PATTERN}</pattern> <charset>UTF-8</charset> <!-- 此處設定字符集 --> </encoder> <!-- 此日誌檔案只記錄ERROR級別的 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>ERROR</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <logger name="org.springframework" additivity="false"> <level value="ERROR" /> <appender-ref ref="STDOUT" /> <appender-ref ref="errorAppender" /> </logger> <!-- 由於啟動的時候,以下兩個包下列印debug級別日誌很多 ,所以調到ERROR--> <logger name="org.apache.tomcat.util" additivity="false"> <level value="ERROR"/> <appender-ref ref="STDOUT"/> <appender-ref ref="errorAppender"/> </logger> <!-- 預設spring boot匯入hibernate很多的依賴包,啟動的時候,會有hibernate相關的內容,直接去除 --> <logger name="org.hibernate.validator" additivity="false"> <level value="ERROR"/> <appender-ref ref="STDOUT"/> <appender-ref ref="errorAppender"/> </logger> <root level="DEBUG"> <appender-ref ref="STDOUT"/> <appender-ref ref="infoAppender"/> <appender-ref ref="debugAppender"/> <appender-ref ref="warnAppender"/> <appender-ref ref="errorAppender"/> </root> </configuration>
2. application.yml
logging:
config: classpath:logback-spring.xml
file:
path: c:/logs
3.控制檯樣式展示
4.日誌樣式展示
- application.yml與logback-spring.xml檔案同級