2016-12-19 4 views
1

Я пытаюсь создать политику регистрации в проекте на основе весны.Политика резервного копирования на основе времени и размера

В ниже регистраторе я хочу создать политику катания, которая создает новый файл, когда rollfile.log выходит более 10 Мб. Поэтому у меня может быть резервное копирование журналов без одного огромного файла журнала. Есть ли способ сделать это?

Ниже приведено мое 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, чтобы понять, что он делает.

Что вам нужно сделать, это изменить TimeBasedRollingPolicy для SizeAndTimeBasedRollingPolicy и установить <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 не удаляет «папку журнала даты», но только архивированные файлы внутри папки. Есть ли какая-либо конфигурация для достижения этой –

 Смежные вопросы

  • Нет связанных вопросов^_^