2016-10-31 2 views
0

Мне нужно удалить старые файлы журналов, которые ежедневно перекатываются. Чтобы ограничить количество файлов, которые я пробовал:Ошибка при удалении старых файлов с помощью Log4j2

<RollingFile 
     name="FileAppender" 
     fileName="${baseDir}/mylog.log" 
     filePattern="${baseDir}/mylog %d{yyyy-MM-dd}.log.zip"> 
     <PatternLayout pattern="%d{ISO8601} [%p] %c{1} - %m%n"/> 
     <Policies>    
      <TimeBasedTriggeringPolicy interval="1" />    
     </Policies> 
     <DefaultRolloverStrategy max="5">   
    </RollingFile> 

Но журналы не удаляются.

Теперь я triying

<DefaultRolloverStrategy> 
     <Delete basePath="${baseDir}" maxDepth="0">     
      <IfLastModified age="5d" /> 
     </Delete> 
    </DefaultRolloverStrategy> 

Но я получаю ошибку:

ERROR DefaultRolloverStrategy содержит недопустимый элемент или атрибут "Удалить"

Существует что-то не так с моей log4j2 .xml-файл?

Я использую Maven с:

<dependency> 
     <groupId>org.apache.logging.log4j</groupId> 
     <artifactId>log4j-core</artifactId> 
     <version>2.0.1</version> 
    </dependency> 

    <dependency> 
     <groupId>org.apache.logging.log4j</groupId> 
     <artifactId>log4j-slf4j-impl</artifactId> 
     <version>2.0.1</version> 
    </dependency> 

ответ

1

Вам необходимо обновить версию Log4j. Функция удаления была введена в 2.5. Последняя версия - 2.7. Я рекомендую использовать последнюю версию.

Также проверьте документацию для атрибута maxDepth. Вероятно, вы должны указать 1 или более. Zero означает сам каталог, а не файлы в этом каталоге.

+0

Спасибо, что элемент «Удалить» теперь принят, но log4j2 по-прежнему не удаляет файлы. Я определяю , но, хотя я меняю системную дату моего компьютера, файлы журнала остаются. –

+0

Я обновил ответ. MaxDepth не должен быть равен нулю. –

+0

Все работает сейчас, еще раз спасибо! –