Нет log4j автоматического сжатия после перезапуска приложения - PullRequest
1 голос
/ 20 декабря 2010

Я использую автоматическую прокрутку и сжатие журналов, поддерживаемую TimeBasedRollingPolicy, предоставленной в Log4J Extras (см. Конфигурацию ниже).

Это нормально для приложения, которое выполняет эту регистрациюпостоянно останавливаться / запускаться, и я заметил, что автоматическое сжатие не происходит, если приложение останавливается во время события, запускающего опрокидывание (в данном случае ежечасное опрокидывание).Я нахожу это странным, поскольку само свертывание (без сжатия) все еще происходит и, кажется, работает нормально.

Разве невозможно обеспечить сжатие журналов для приложения, которое не работает непрерывно?

Кто-нибудь знает, как заставить это работать с Log4J?

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration debug="true">

  <appender name="ROLL" class="org.apache.log4j.rolling.RollingFileAppender">
    <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
      <param name="FileNamePattern" value="/var/batchproc/logs/log4j_roll_compress_%d{yyyy-MM-dd-kk}.log.gz"/>
    </rollingPolicy>

    <layout class="org.apache.log4j.PatternLayout">
      <param name="ConversionPattern" value="[%d] [%t] %-5p %c   %m%n"/>
    </layout>
  </appender>

  <root>
    <appender-ref ref="ROLL"/>
  </root>

</log4j:configuration>

1 Ответ

2 голосов
/ 20 мая 2011

Процесс пролонгации запускается только при регистрации двух сообщений, которые находятся в разных единицах времени (например, в часах) во время работы приложения . Прошлые единицы времени не проверяются при запуске приложения.

Одна вещь, которую вы можете сделать, - это использовать отдельное "активное" имя файла, в которое будут помещаться все сообщения журнала, прежде чем они свернуты / упакованы. Если вы сделаете это, любой существующий активный файл журнала будет добавлен до тех пор, пока не пройдет еще один час, а , а затем свернут в сжатый файл с меткой времени. К сожалению, отметка времени этого файла не проверяется при запуске (по крайней мере, в apache-log4j-extras 1.1), поэтому журналы старого часа и журналы нового часа будут вместе в свернутом файле. Но, по крайней мере, он будет заархивирован!

<appender name="ROLL" class="org.apache.log4j.rolling.RollingFileAppender">
    <param name="File" value="/var/batchproc/logs/log4j_roll_active.log"/>

    ...rest of example config here...
</appender>
...