Logback RollingFileAppender не работает

У меня есть следующий logback.xml файл:

<configuration>

    <!--Daily rolling file appender -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>/usr/share/tomcat6/logs/api.log</File>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>/usr/share/tomcat6/logs/api/api.%d{yyyy-MM-dd}.gz</FileNamePattern>
        </rollingPolicy>
        <encoder>
          <pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n</pattern>
        </encoder>
    </appender>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%msg%n</pattern>
        </encoder>
    </appender>

      <root level="debug">
        <appender-ref ref="FILE" />
        <appender-ref ref="STDOUT" />
      </root>
</configuration>

Мой файл журнала работает нормально. Однако аспект файла файла не является. Вместо gzipping файла и перемещения его в папку api, он помещает его в тот же каталог и переименовывает его в

api.log(string of numbers).tmp

например.

api.log849916939395200.tmp

Кто-нибудь знает, почему это происходит?

Ответ 1

Просто удалите тег файла из appender. Используйте что-то вроде этого,

<appender name="contentDeliveryLogAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
  <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    <!-- daily rollover -->
    <fileNamePattern>${ICEX_HOME}/logs/content-delivery.%d{yyyy-MM-dd}.log</fileNamePattern>
      <!-- keep 1 days' worth of history -->
      <maxHistory>30</maxHistory>
  </rollingPolicy>
  <encoder>
    <pattern>%d [%thread] %-5level %logger{36} H:${HOSTNAME} - SC:%X{optionalParam} %msg%n</pattern>
  </encoder>
</appender>

Это работает для меня, как рекомендовано документацией logback здесь

Ответ 2

У меня была аналогичная проблема. Чтобы исправить эту проблему, измените шаблон на    /usr/share/tomcat6/logs/api/api.%d{yyyy-MM-dd}.%i.gz.

В конце вы пропустили %i.