1. 程式人生 > 實用技巧 >SpringBoot按日期和檔案大小生成日誌檔案到對應日期資料夾

SpringBoot按日期和檔案大小生成日誌檔案到對應日期資料夾

一、效果圖:

二、程式碼

(一)Bootstrap.yml配置檔案

logging:
  config: classpath:logback-spring.xml

(二)新增logback-spring.xml日誌配置檔案

<configuration>
   <!-- %m輸出的資訊, %p日誌級別, %t執行緒名, %d日期, %c類的全名, %i索引 -->
   <!-- appender是configuration的子節點,是負責寫日誌的元件 -->
   <!-- ConsoleAppender把日誌輸出到控制檯 -->
   <!--    <property name="CONSOLE_LOG_PATTERN" -->
   <!--               value="%date{yyyy-MM-dd HH:mm:ss} | %highlight(%-5level) | %boldYellow(%thread) | %boldGreen(%logger) | %msg%n"/> -->
   <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
      <encoder>
         <!--<pattern>${CONSOLE_LOG_PATTERN}</pattern> -->
         <pattern>%date{yyyy-MM-dd HH:mm:ss} %highlight(%-5level) (%file:%line\)- %m%n</pattern>
         <!-- 控制檯也要使用utf-8,不要使用gbk -->
         <charset>UTF-8</charset>
      </encoder>
   </appender>

   <!-- RollingFileAppender:滾動記錄檔案,先將日誌記錄到指定檔案,當符合某個條件時,將日誌記錄到其他檔案 -->
   <!-- 1.先按日期存日誌,日期變了,將前一天的日誌檔名重新命名為xxx%日期%索引,新的日誌仍然是sys.log -->
   <!-- 2.如果日期沒有變化,但是當前日誌檔案的大小超過1kb時,對當前日誌進行分割 重名名 -->
   <appender name="syslog" class="ch.qos.logback.core.rolling.RollingFileAppender">
      <!--<File>${catalina.base}/mylog/sys.log</File>-->
      <File>${catalina.base}/%d/sys.log</File>
      <!-- rollingPolicy:當發生滾動時,決定 RollingFileAppender 的行為,涉及檔案移動和重新命名。 -->
      <!-- TimeBasedRollingPolicy: 最常用的滾動策略,它根據時間來制定滾動策略,既負責滾動也負責出發滾動 -->
      <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
         <!-- 活動檔案的名字會根據fileNamePattern的值,每隔一段時間改變一次 -->
         <!-- 檔名:mylog/sys.2017-12-05.0.log -->
         <!--<fileNamePattern>${catalina.base}/mylog/sys.%d.%i.log</fileNamePattern>-->
         <fileNamePattern>${catalina.base}/%d/sys.%d.%i.log</fileNamePattern>
         <!-- 每產生一個日誌檔案,該日誌檔案的儲存期限為30天 -->
         <maxHistory>30</maxHistory>
         <timeBasedFileNamingAndTriggeringPolicy  class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            <!-- maxFileSize:這是活動檔案的大小,預設值是10MB,本篇設定為1KB,只是為了演示 -->
            <maxFileSize>1KB</maxFileSize>
         </timeBasedFileNamingAndTriggeringPolicy>
      </rollingPolicy>
      <encoder>
         <!-- pattern節點,用來設定日誌的輸入格式 -->
         <pattern>
            %d %p (%file:%line\)- %m%n
         </pattern>
         <!-- 記錄日誌的編碼 -->
         <charset>UTF-8</charset> <!-- 此處設定字符集 -->
      </encoder>
   </appender>
   <!-- 控制檯日誌輸出級別 -->
   <root level="info">
      <appender-ref ref="STDOUT" />
   </root>
   <!-- 指定專案中某個包,當有日誌操作行為時的日誌記錄級別 -->
   <!-- com.appley為根包,也就是隻要是發生在這個根包下面的所有日誌操作行為的許可權都是DEBUG -->
   <!-- 級別依次為【從高到低】:FATAL > ERROR > WARN > INFO > DEBUG > TRACE  -->
   <logger name="com.yjlc.service.impl.seckill" level="DEBUG">
      <appender-ref ref="syslog" />
   </logger>
</configuration>

三、準備架包

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>

在後端程式碼中需要輸出日誌到日誌檔案中的,則根據日誌配置檔案的日誌輸出級別使用不同的列印語句,如INFO級別:

log.info("INFO級別日誌輸出");

  按照以上步驟操作即可實現對應效果。

如果對以上內容有疑問的歡迎留言探討。

一、程式碼

(一)Bootstrap.yml配置檔案