2016-12-19 70 views
1

我試圖在基於spring的項目中創建記錄器策略。基於時間和大小的記錄器備份策略

在下面的記錄器中,我希望創建一個滾動策略,該文件在rollingfile.log超過10 Mb時創建一個新文件。所以我可以備份日誌而不需要一個巨大的記錄器文件。有沒有辦法做到這一點?

下面給出的是我的logback.xml。

<?xml version="1.0" encoding="UTF-8"?> 
    <configuration debug="true" scan="true" scanPeriod="30 seconds"> 
     <property name="LOG_PATH" value="D:/coinLogs" /> 
     <property name="LOG_ARCHIVE" value="${LOG_PATH}/archive" /> 

     <appender name="Console-Appender" class="ch.qos.logback.core.ConsoleAppender"> 
      <layout> 
       <pattern>[%d{yyyy-MM-dd HH:mm:ss}] - [%X{requestId}] - %p %c -- %m%n 
       </pattern> 
      </layout> 
     </appender> 

     <appender name="File-Appender" class="ch.qos.logback.core.FileAppender"> 
      <file>${LOG_PATH}/logfile.log</file> 
      <encoder> 
       <pattern>[%d{yyyy-MM-dd HH:mm:ss}] - [%X{requestId}] - %p %c -- %m%n 
       </pattern> 
       <outputPatternAsHeader>true</outputPatternAsHeader> 
      </encoder> 
     </appender> 

     <appender name="RollingFile-Appender" 
      class="ch.qos.logback.core.rolling.RollingFileAppender"> 
      <file>${LOG_PATH}/rollingfile.log</file> 
      <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
       <fileNamePattern>${LOG_ARCHIVE}/rollingfile.log%d{yyyy-MM-dd}.log 
       </fileNamePattern> 
       <maxHistory>30</maxHistory> 
       <totalSizeCap>10MB</totalSizeCap> 
      </rollingPolicy> 
      <encoder> 
       <pattern>%msg%n</pattern> 
      </encoder> 
     </appender> 

     <appender name="Async-Appender" class="ch.qos.logback.classic.AsyncAppender"> 
      <appender-ref ref="RollingFile-Appender" /> 
     </appender> 

     <logger name="coinPay.logbackxml" level="info" additivity="false"> 
      <appender-ref ref="Console-Appender" /> 
      <appender-ref ref="File-Appender" /> 
      <appender-ref ref="Async-Appender" /> 
     </logger> 

     <!-- To remove extra hibernate logs --> 
     <logger name="org.hibernate"> 
      <level value="info" /> 
     </logger> 

     <root> 
      <appender-ref ref="Console-Appender" /> 
      <appender-ref ref="File-Appender" /> 
      <appender-ref ref="Async-Appender" /> 
     </root> 

    </configuration> 

回答

1

總大小上限沒有做你想做的。

<totalSizeCap>10MB</totalSizeCap> 

它限制了所有歸檔日誌文件的總大小。你可以看看TimeBasedArchiveRemover::capTotalSize瞭解它在做什麼。

你需要做的是改變TimeBasedRollingPolicySizeAndTimeBasedRollingPolicy並設置<maxFileSize>10MB</maxFileSize>

所以,你的配置應該包括:

<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> 
    <fileNamePattern>${LOG_ARCHIVE}/rollingfile.log%d{yyyy-MM-dd}.log 
    </fileNamePattern> 
    <maxFileSize>10MB<maxFileSize> 
    <maxHistory>30</maxHistory> 
</rollingPolicy> 
+0

@roby嗨,SizeAndTimeBasedRollingPolicy不刪除「日期日誌文件夾」,但只有存檔文件夾內的文件。有沒有任何配置來實現這一點 –