logback日誌沒法按日期分割的問題

發如今線上的時候,日誌沒法按日期分割的問題,全部日誌都在第一天部署的那個日期的文件裏面。html

背景是Springboot + logbackjava

 

緣由是:mysql

 

以前是:linux

timeBaseRollingPolicy來設定日誌保留日期和格式:sql

 

sizeBaseTriggerPolicy來設定最大日誌文件數據庫

 

可是!!!apache

 

 

基於時間的滾動切割策略 TimeBasedRollingPolicy,天天0點自動生成一份新的日誌文件,但裏面包含了一段 triggeringPolicy觸發策略,即最大單個文件超過 10MB 自動新成新日誌文件, TimeBasedRollingPolicy 是基於時間的,不能和其餘策略一塊兒組合使用。app

 

也就是說這兩個policy是衝突的。異步

 

 

 

解決方法:ide

改用使用時間和大小組合策略 SizeAndTimeBasedRollingPolicy:

 

 

 

順便上最後完整的配置文件:

<?xml version="1.0" encoding="UTF-8"?>

<configuration debug="false">

    <!--定義日誌文件的存儲地址 勿在 LogBack 的配置中使用相對路徑-->
   <property name="LOG_HOME" value="log" />
   
   <!-- linux上用絕對路徑試試 -->
  <!--  <property name="LOG_HOME" value="/home/inforPoint/log" /> -->
   
    
    
    <!-- 控制檯輸出 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!-- 格式化輸出:%d表示日期,%thread表示線程名,%-5level:級別從左顯示5個字符寬度%msg:日誌消息,%n是換行符 -->
            <!-- <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> -->
            <pattern>%red(%d{yyyy-MM-dd HH:mm:ss}) %highlight(%-5level) %black(${PID}) --- %green([%thread]) %boldMagenta(%logger{50}) : %cyan(%msg%n)</pattern>
            
        </encoder>
    </appender> 
    
    
    
    
    
    
    <!-- 按照天天生成日誌文件 -->
    <appender name="FILE"  class="ch.qos.logback.core.rolling.RollingFileAppender">
    
         <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>   <!--過濾掉error的級別-->
            <onMatch>DENY</onMatch>
            <onMismatch>ACCEPT</onMismatch>
        </filter>
    
    <!--     <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            日誌文件輸出的文件名
            <FileNamePattern>${LOG_HOME}/inforPoint_log_%d{yyyy-MM-dd}.log</FileNamePattern>
            日誌文件保留天數
            <MaxHistory>5</MaxHistory>
        </rollingPolicy> -->
        
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!-- 以前的  rollingPolicy和triggeringPolicy衝突了  用一個新的標籤  結合二者 -->
            
             <!--  日誌文件輸出的文件名 -->
            <FileNamePattern>${LOG_HOME}/inforPoint_log_%d{yyyy-MM-dd}_%i.log</FileNamePattern>
            
                  <!-- 日誌文件保留天數 -->
            <MaxHistory>5</MaxHistory>
            
            <!-- 日誌文件最大尺寸 -->
            <maxFileSize>10MB</maxFileSize>
            
        </rollingPolicy>
        
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化輸出:%d表示日期,%thread表示線程名,%-5level:級別從左顯示5個字符寬度%msg:日誌消息,%n是換行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level ${PID} --- [%thread]  %logger{50} - %msg%n</pattern>
        </encoder>
        
        
        <!--日誌文件最大的大小-->
      <!--   <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>10MB</MaxFileSize>
        </triggeringPolicy> -->
    </appender>
    
    
    
    
    
    
    
    <!-- 按照天天生成error日誌文件 -->
    <appender name="ERROR_FILE"  class="ch.qos.logback.core.rolling.RollingFileAppender">
    
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level><!--//打印error-->
        </filter>
        
        
       <!--  <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            日誌文件輸出的文件名
            <FileNamePattern>${LOG_HOME}/inforPoint_error_log_%d{yyyy-MM-dd}.log</FileNamePattern>
            日誌文件保留天數
            <MaxHistory>5</MaxHistory>
        </rollingPolicy> -->
        
        
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!-- 以前的  rollingPolicy和triggeringPolicy衝突了  用一個新的標籤  結合二者 -->
            
             <!--  日誌文件輸出的文件名 -->
            <FileNamePattern>${LOG_HOME}/inforPoint_error_log_%d{yyyy-MM-dd}_%i.log</FileNamePattern>
            
                  <!-- 日誌文件保留天數 -->
            <MaxHistory>5</MaxHistory>
            
            <!-- 日誌文件最大尺寸 -->
            <maxFileSize>10MB</maxFileSize>
            
        </rollingPolicy>
        
        
        
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化輸出:%d表示日期,%thread表示線程名,%-5level:級別從左顯示5個字符寬度%msg:日誌消息,%n是換行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level ${PID} --- [%thread]  %logger{50} - %msg%n</pattern>
        </encoder>
        
        
        <!--日誌文件最大的大小-->
       <!--  <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>10MB</MaxFileSize>
        </triggeringPolicy> -->
        
        
    </appender>
    
    
    
    
  

    <!--myibatis log configure-->
    <logger name="com.apache.ibatis" level="TRACE"/>
    <logger name="java.sql.Connection" level="DEBUG"/>
    <logger name="java.sql.Statement" level="DEBUG"/>
    <logger name="java.sql.PreparedStatement" level="DEBUG"/>
    
    <!-- 多是比較新的版本,會有不少thymeleaf configuration的日誌,因此設個等級來避免 -->
    <logger name="org.thymeleaf.TemplateEngine.CONFIG" level="WARN" />

    <!-- 日誌輸出級別 -->
    <root level="INFO">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE" />
        <appender-ref ref="ERROR_FILE" />
    </root>
    
    
    <!--日誌異步到數據庫 -->
    <!--<appender name="DB" class="ch.qos.logback.classic.db.DBAppender">-->
        <!--&lt;!&ndash;日誌異步到數據庫 &ndash;&gt;-->
        <!--<connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource">-->
            <!--&lt;!&ndash;鏈接池 &ndash;&gt;-->
            <!--<dataSource class="com.mchange.v2.c3p0.ComboPooledDataSource">-->
                <!--<driverClass>com.mysql.jdbc.Driver</driverClass>-->
                <!--<url>jdbc:mysql://127.0.0.1:3306/databaseName</url>-->
                <!--<user>root</user>-->
                <!--<password>root</password>-->
            <!--</dataSource>-->
        <!--</connectionSource>-->
    <!--</appender>-->
</configuration>
View Code

 

 

參考博客:

http://www.ibloger.net/article/3199.html——《坑爹的Logback日誌沒法按天切割問題》

相關文章
相關標籤/搜索