1. 程式人生 > 實用技巧 >SpringBoot開發:日誌切割簡單記錄

SpringBoot開發:日誌切割簡單記錄

一、依賴包匯入

  1、匯入logback依賴包:

<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.2.3</version>
</dependency>

二、編寫日誌規則

  1、在resources下新增logback.xml檔案,內容如下:

<?xml version="1.0" encoding="utf-8"?>
<configuration> <!-- 定義檔案輸出格式, 編碼方式, 輸出檔案的路徑 --> <property name="pattern" value="[%date{yyyy-MM-dd HH:mm:ss.SSS}] %X{logthreadId} %-5level %logger{80} %method %line - %msg%n"/> <property name="charsetEncoding" value="UTF-8"/> <property name="logPathError"
value="/root/monitoring/service/logs/service-log/error"/> <property name="logPathWarning" value="/root/monitoring/service/logs/service-log/warning"/> <property name="logPathInfo" value="/root/monitoring/service/logs/service-log/info"/> <!-- CONSOLG 控制檯日誌--> <appender name="console"
class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>${pattern}</pattern> <charset>${charsetEncoding}</charset> </encoder> </appender> <!-- INFO 輸出到檔案 --> <appender name="infoLog" class="ch.qos.logback.core.rolling.RollingFileAppender"> <append>true</append> <encoder> <pattern>${pattern}</pattern> <charset>${charsetEncoding}</charset> </encoder> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern> ${logPathInfo}${file.separator}%d{yyyy-MM-dd}${file.separator}service-INFO-%d{yyyy-MM-dd}.%i.log </fileNamePattern> <maxHistory>30</maxHistory> <maxFileSize>10MB</maxFileSize> </rollingPolicy> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <!-- 設定日誌輸出級別 --> <level>INFO</level> </filter> </appender> <!-- WARN 輸出到檔案 --> <appender name="warnLog" class="ch.qos.logback.core.rolling.RollingFileAppender"> <append>true</append> <encoder> <pattern>${pattern}</pattern> <charset>${charsetEncoding}</charset> </encoder> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern> ${logPathWarning}${file.separator}%d{yyyy-MM-dd}${file.separator}service-WARN-%d{yyyy-MM-dd}.%i.log </fileNamePattern> <maxHistory>30</maxHistory> <maxFileSize>10MB</maxFileSize> </rollingPolicy> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <!-- 設定日誌輸出級別 --> <level>WARN</level> </filter> </appender> <!-- ERROR 輸出到檔案 --> <appender name="errorLog" class="ch.qos.logback.core.rolling.RollingFileAppender"> <append>true</append> <encoder> <pattern>${pattern}</pattern> <charset>${charsetEncoding}</charset> </encoder> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern> ${logPathError}${file.separator}%d{yyyy-MM-dd}${file.separator}service-ERROR-%d{yyyy-MM-dd}.%i.log </fileNamePattern> <maxHistory>30</maxHistory> <maxFileSize>10MB</maxFileSize> </rollingPolicy> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <!-- 設定日誌輸出級別 --> <level>ERROR</level> </filter> </appender> <!--配置日誌輸出的級別--> <root level="INFO"> <appender-ref ref="console"/> <appender-ref ref="infoLog"/> <appender-ref ref="warnLog"/> <appender-ref ref="errorLog"/> </root> </configuration>

  2、標籤、引數配置詳情

  (1)configuration:

  scan: 預設為true,當設定為true時,配置檔案發生改變則會被重新載入。

  scanPeriod: 設定監測配置檔案是否有修改的時間間隔,預設單位是毫秒;當scan為true此屬性生效,預設的時間間隔為1分鐘。

  debug: 預設為false,當設定為true時,列印內部日誌資訊。

  (2)property:

  name: 變數的名稱

  value: 變數的值

  (3)appender:

  ①ConsoleAppender:

  encoder:對日誌進行格式化。

  target:字串System.out或者System.err。

  ②FileAppender:

  file:被寫入的檔名,如果上級目錄不存在會自動建立。
  append:預設為true,true則日誌追加到檔案結尾,false則清空現存檔案。
  encoder:對日誌進行格式化。
  prudent:
預設false,若是true則日誌安全的寫入檔案。

  ③RollingFileAppender:

  file:被寫入的檔名,如果上級目錄不存在會自動建立。

  append:預設為true,true則日誌追加到檔案結尾,false則清空現存檔案。

  rollingPolicy:當發生滾動時,決定RollingFileAppender的行為是檔案移動或重新命名,屬性class定義具體的滾動策略類ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy
    fileNamePattern:必要節點,包含檔名及“%d”轉換符,“%d”包含java.text.SimpleDateFormat指定的時間格式,如:%d{yyyy-MM}。如果直接使用 %d,預設格式是 yyyy-MM-dd。
              RollingFileAppender的file位元組點可有可無,通過設定file可以為活動檔案和歸檔檔案指定不同位置,當前日誌總是記錄到file指定的檔案(活動檔案),活動檔案的名字不會改變;
              如果沒設定file,活動檔案的名字會根據fileNamePattern 的值,每隔一段時間改變一次。“/”或者“\”會被當做目錄分隔符。
              必須含有“%i”,在切分檔案時這個數字會用來做標識。
    maxHistory:    可選節點,控制保留的歸檔檔案的最大數量,超出數量就刪除舊檔案。               假設設定每個月滾動,且
<maxHistory>是6,則只儲存最近6個月的檔案,刪除之前的舊檔案。

    maxFileSize: 這是活動檔案的大小,預設值是10MB。

  ④AsyncAppender

  (4)logger:

  設定某一包或類下的日誌列印級別、appender。

  (5)root:

  指定日誌級別及輸出的appender。

三、對映

  1、在yml中對logback.xml進行對映,使其生效:三、在配置檔案中對映

logging:
config:
classpath:logback.xml

四、執行結果

  1、按照日誌級別進行切割:

  

  2、按照時間和大小進行切割:

  

  

<configuration>