2017-02-23 43 views
0

Я использую log4j в своем приложении, и журналы создаются с использованием этой структуры.Можем ли мы удалить журналы более старых дней в log4j, кроме использования MaxBackupIndex

Я хотел удалить журналы, которые старше 10 дней, так как размер журналов быстро растет.

Я знаю MaxFileSize и MaxBackupIndex, которые обычно удаляются на основе количества созданных файлов, но мое требование - удалить журналы, которые старше определенных дней. У нас есть какой-либо вариант в log4j для этого или нам нужно использовать некоторый скрипт unix, как показано ниже, и очистить журналы?

find -type f -mtime +7 -exec rm -f {} \; 

Благодаря Harsha GNS

ответ

0

Log4j2 поддерживает в конфигурации опрокидывание в custom Delete action. Это должно быть именно то, что вы ищете.

Ниже приведен пример конфигурации, в которой используется RollingFileAppender с политикой запуска cron, настроенной для запуска каждый день в полночь. Архивы хранятся в каталоге на основе текущего года и месяца. Все файлы в базовый каталоге, которые соответствуют "*/app-*.log.gz" Glob и 60 дней и старше удаляются во время опрокидывания:

<?xml version="1.0" encoding="UTF-8"?> 
<Configuration status="warn" name="MyApp" packages=""> 
    <Properties> 
    <Property name="baseDir">logs</Property> 
    </Properties> 
    <Appenders> 
    <RollingFile name="RollingFile" fileName="${baseDir}/app.log" 
      filePattern="${baseDir}/$${date:yyyy-MM}/app-%d{yyyy-MM-dd}.log.gz"> 
     <PatternLayout pattern="%d %p %c{1.} [%t] %m%n" /> 
     <CronTriggeringPolicy schedule="0 0 0 * * ?"/> 
     <DefaultRolloverStrategy> 
     <Delete basePath="${baseDir}" maxDepth="2"> 
      <IfFileName glob="*/app-*.log.gz" /> 
      <IfLastModified age="60d" /> 
     </Delete> 
     </DefaultRolloverStrategy> 
    </RollingFile> 
    </Appenders> 
    <Loggers> 
    <Root level="error"> 
     <AppenderRef ref="RollingFile"/> 
    </Root> 
    </Loggers> 
</Configuration> 
+0

спасибо. Значит, у нас нет этой опции в log4j? Мы должны использовать log4j2 для этого, тогда –

+0

Я так считаю. Возможно, вам захочется перейти на Log4j2, так как Log4j 1 стал End Of Life в 2015 году и, как известно, сломался в Java 9. –