首頁 > 軟體

Spring boot2.0 實現紀錄檔整合的方法(2)

2022-04-21 13:01:32

前言:

上一章Spring boot2.0 紀錄檔整合方法分享(1)講解了spring boot紀錄檔簡單整合,將所有的紀錄檔都輸出到一個檔案中,但是在實際的專案中,我們需要將紀錄檔進行分類,常規紀錄檔、異常紀錄檔、監控紀錄檔等,需要將紀錄檔輸出到不同的檔案中。spring boot 紀錄檔預設採用的是sf4j+logback實現,預設組態檔為logback-spring.xml,如果需要輸出到不同的檔案,需要自定義logback.xml檔案。

logback.xml組態檔定義

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
	<property name="LOG_PATTERN" value="%date{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n" />
	<property name="LOG_PATH" value="/logs"/>
    <!--控制檯紀錄檔格式-->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder charset="UTF-8">
            <pattern>${LOG_PATTERN}</pattern>
        </encoder>
    </appender>
    <!--系統INFO級別紀錄檔-->
    <appender name="SYS_INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>${LOG_PATH}/info.log</File>
        <append>true</append>
		 <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_PATH}/info-%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
            <maxHistory>15</maxHistory>
            <timeBasedFileNamingAndTriggeringPolicy
                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <encoder charset="UTF-8">
           <pattern>${LOG_PATTERN}</pattern>
        </encoder>
    </appender>
    <!--系統EEOR級別紀錄檔-->
  <appender name="SYS_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>${LOG_PATH}/error.log</File>
        <append>true</append>
	   <!--error級別紀錄檔 -->
	   <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_PATH}/error-%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
            <maxHistory>15</maxHistory>
            <timeBasedFileNamingAndTriggeringPolicy
                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <encoder charset="UTF-8">
           <pattern>${LOG_PATTERN}</pattern>
        </encoder>
    </appender>
    <root level="INFO">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="SYS_INFO"/>
	<appender-ref ref="SYS_ERROR"/>
    </root>
</configuration>

設定說明 上述設定定義了info和error級別紀錄檔,分別輸出到不同的紀錄檔檔案。紀錄檔檔案採用的捲動策略,每個檔案大小為10M,建議儲存的日期為15天,便於有些異常具備以周為頻次發生的特點。

  <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_PATH}/error-%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
            <maxHistory>15</maxHistory>
            <timeBasedFileNamingAndTriggeringPolicy
                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>

參照自定義logback.xml檔案

在專案的application.yml檔案中設定如下資訊

logging:
  config: classpath:logback.xml

附加說明

預設情況下紀錄檔組態檔存放在classpath路徑下,專案打包後紀錄檔組態檔存放在jar包中,如果需要修改紀錄檔檔案的資訊(例如修改存放路徑),需要重新打包,即為不方便,解決方案為將紀錄檔組態檔提取到專案外,引入外部的logback.xml檔案

logging:
  config: file:config/logback.xml

file:檔案的相對路徑。

本文主要講解的為常規紀錄檔和異常紀錄檔,下一張講解監控紀錄檔輸出。

到此這篇關於Spring boot2.0 實現紀錄檔整合的方法(2)的文章就介紹到這了,更多相關Spring boot紀錄檔整合內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com