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、按照時間和大小進行切割:

  

  

 

 

__EOF__


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM