Logback иногда не записывает в файл журнала, а иногда не катит файл журнала - PullRequest
3 голосов
/ 25 августа 2010

Иногда, когда я запускаю свое Java-приложение, logback отказывается что-либо записывать в мой лог-файл. Иногда он также отказывается откатывать файл журнала в полночь (или при первом событии регистрации после полуночи), что приводит к тому, что события регистрации теряются в пустоте. Когда я смотрю на мой основной файл журнала, когда logbacks не удалось обработать журнал, у него будет время, подобное 23:59, со вчерашней датой, и любые и все операторы регистрации после этого времени будут безвозвратно потеряны. У меня довольно простой файл конфигурации, и он выглядит правильно. Это, безусловно, должно быть правильным, поскольку оно работает большую часть времени.

Вот мой файл конфигурации:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <!--See http://logback.qos.ch/manual/appenders.html#RollingFileAppender-->
    <!--and http://logback.qos.ch/manual/appenders.html#TimeBasedRollingPolicy-->
    <!--for further documentation-->
    <append>true</append>
    <File>aggregator.log</File>
    <encoder>
        <!-- was: %d{yyyy-MM-dd HH:mm:ss}%5p [%t] (%F:%L) - %msg%n -->
      <pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level [%thread] \(%class{25}:%line\) - %msg%n</pattern>
    </encoder>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <!-- By setting the name to .gz here, we get free compression. -->
      <fileNamePattern>aggregator.log.%d{yyyy-MM-dd}.gz</fileNamePattern>
    </rollingPolicy>
  </appender>
  <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level [%thread] \(%class{25}:%line\) - %msg%n</pattern>
    </encoder>
  </appender>
  <root level="DEBUG">
    <appender-ref ref="file"/>
    <appender-ref ref="console"/>
  </root>
</configuration>

К сожалению, я не могу надежно воспроизвести эту ошибку, поэтому ее отладка немного сложна. Может ли кто-нибудь сказать мне, что я делаю неправильно, или в чем еще может быть проблема? Если это поможет, я перенаправлю STDOUT и STDERR в / dev / null (я работаю на Linux, кстати).

Ответы [ 2 ]

9 голосов
/ 25 августа 2010

Для устранения проблемы используйте <configuration debug="true"> и не перенаправляйте стандартный вывод.Logback будет печатать сообщения там, когда он анализирует конфигурацию и когда что-то идет не так.

0 голосов
/ 28 февраля 2011

Оказывается, что это было очень мало общего с logback.Проблема заключалась в том, что у меня был файл .policy, в котором не указывались надлежащие разрешения для приложений.Когда я думал, что мне удалось повернуть файлы, это были времена, когда я перемещал или удалял предыдущие вручную.Я решил эту проблему, убедившись, что logback имеет достаточные разрешения для поворота собственных журналов.

...