Log4j2 DefaultRolloverStrategy Configuration удаляет файлы журнала, но не пустые папки - PullRequest
0 голосов
/ 15 ноября 2018

Я использую log4j2 для журналов приложений, я использую XML, и приведенная ниже конфигурация предназначена для журналов. Я храню журналы в папках, названных в честь текущей даты. Каждый день создается новая папка с именем «2018-11-15» и в нее сохраняются журналы. Код удаляет файлы журнала в соответствии с размером и возрастом, но не удаляет пустые папки (2018-11-15) после удаления этих файлов из папки.

<?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-HH}-%i.log.gz">
      <PatternLayout pattern="%d %p %c{1.} [%t] %m%n" />
      <Policies>
        <TimeBasedTriggeringPolicy />
        <SizeBasedTriggeringPolicy size="250 MB"/>
      </Policies>
      <DefaultRolloverStrategy max="100">
        <!--
        Nested conditions: the inner condition is only evaluated on files
        for which the outer conditions are true.
        -->
        <Delete basePath="${baseDir}" maxDepth="2">
          <IfFileName glob="*/app-*.log.gz">
            <IfLastModified age="30d">
              <IfAny>
                <IfAccumulatedFileSize exceeds="100 GB" />
                <IfAccumulatedFileCount exceeds="10" />
              </IfAny>
            </IfLastModified>
          </IfFileName>
        </Delete>
      </DefaultRolloverStrategy>
    </RollingFile>
  </Appenders>
  <Loggers>
    <Root level="error">
      <AppenderRef ref="RollingFile"/>
    </Root>
  </Loggers>
</Configuration>

Как удалить папки после удаления всех файлов внутри них? Thanx!

1 Ответ

0 голосов
/ 20 ноября 2018

У вас нет опции встраивания в log4j2 для удаления пустых папок.Вы можете проверить этот StackOverflow ответ , и это log4j2 обсуждение проблем .

Я бы сказал, что самый простой способ справиться с этим - запустить cron независимо от конфигурации log4j,Я использую crontab .

...