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配置文件

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章