log4j2 RolllingFileAppender filePattern создает неправильную дату

Я использовал дату в файлеPattern, но дата создания log4j неверна. Сегодня 2015-11-23, но log4j создает файловую директорию с именем 2015-12. моя версия log4j2 - 2.4.1. вот скриншот

ниже моя конфигурация log4j2.

<RollingFile name="RollingFile" fileName="logs/executor.log" append="true"
                 filePattern="logs/$${date:yyyy-MM}/executor-%d{yyyy--MM--dd}-%i.log.gz">
      <PatternLayout>
        <Pattern>%t  %d{yyyy-MM-dd HH:mm:ss} %c %p -%m%n</Pattern>
      </PatternLayout>
      <Policies>
        <TimeBasedTriggeringPolicy interval="24" modulate="true"/>
        <SizeBasedTriggeringPolicy size="1MB"/>
      </Policies>
    </RollingFile>

person chow    schedule 23.11.2015    source источник


Ответы (2)


Эта проблема связана с вашими интервалами. Он эффективно настраивает начальный файл ролловера так, чтобы он был концом следующего ролловера. Документация по RollingFileAppender для TimeBasedTriggeringPolicy говорит: "Как часто должен происходить перенос на основе наиболее конкретной единицы времени в шаблоне даты". Поскольку вашей наиболее конкретной единицей времени является дд, или день месяца, он устанавливает его на 24 дня с 2015-11-23 или где-то в 12-м месяце, когда он будет пролонгирован.

То, что вам, вероятно, нужно, это интервал 1. Это должно прокручиваться каждый день файла, а затем раз в месяц перетекает в следующую подпапку, потому что 1 день был запущен.

Я проверил это с вашим шаблоном, но использовал ММ в конце и интервал = "24." Модулированный, он перекатился в 12/2016, но не модулированный, он перевернулся, говоря 11/2017! Я не могу сказать, почему, и согласно моему комментарию выше, сообщалось о проблемах с этой функцией.

person Adam Marcionek    schedule 14.12.2015

Есть такая же проблема.

<RollingFile name="DailyFileAppender" fileName="logs/server.log"
                 filePattern="logs/server - %d{yyyy-MM-dd} - %i.log">
        <PatternLayout>
            <pattern>%d{yyyy-MM-dd HH:mm:ss,SSS}- %c{1}: %m%n</pattern>
        </PatternLayout>
        <Policies>
            <TimeBasedTriggeringPolicy interval="5"/>
            <SizeBasedTriggeringPolicy size="10 KB"/>
        </Policies>
        <DefaultRolloverStrategy max="4"/>
    </RollingFile>

Данные выходного файла неверны. например, дата "2015-12-01" дата вывода "2015-12-05"

person TinyZ    schedule 01.12.2015
comment
Удалите ‹TimeBasedTriggeringPolicy interval=24 modulate=true/>, все работает нормально. - person TinyZ; 01.12.2015
comment
Я изменил filePattern на filePattern=logs/$${date:yyyy-MM}/executor-%d{yyyy--MM--dd}-%i.log.gz› - person chow; 08.12.2015
comment
комментарии выше неверны, я изменил filePattern на filePattern=logs/$${date:yyyy-MM-dd}/executor-%d{HH-mm-ss}-%i.log.gz› - person chow; 08.12.2015
comment
Предложение @TinyZ сработало для меня, хотя я не понимаю, почему. Существует ошибка LOG4J2-116, похожая на нашу проблему. - person Adam Marcionek; 15.12.2015