Изменение способа, которым CompositeRollingAppender переименовывает файлы - PullRequest
7 голосов
/ 01 февраля 2011

Я видел много вопросов здесь о различных приложениях, которые есть у log4j, но ни один из них, похоже, не охватывает проблему, с которой я столкнулся. Извинения, если это повторяется где-либо.

Я использую CompositeRollingAppender в нашем приложении, так как нам нужно свернуть файл журнала, основываясь на времени и размере. Это работает точно так, как рекламируется, однако в итоге мы получаем файлы вроде:

myapp.log
myapp.log.2010-12-11
myapp.log.2010-12-11.1
myapp.log.2010-12-12

Можно ли изменить формат переименования файлов в log4j? Я уверен, что должно быть неуловимое свойство где-то , которое я пропустил. Например, в описанной выше ситуации я бы хотел что-то вроде:

myapp.log
myapp-2010-12-11.log
myapp-2010-12-11.1.log
myapp-2010-12-12.log

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

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 21 апреля 2012

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

Вы можете попробовать использовать дополнительные функции log4j CompositeTriggeringPolicy, но я не знаю RollingPolicyэто будет включать как дату, так и окно.

Для ваших администраторов выбор состоит в том, чтобы отказаться от ограничения размера файлов, чтобы вы могли использовать RollingFileAppender с TimeBasedRollingPolicy с

<param name="FileNamePattern" value="MyApp.%d{yyyy-MM-W}.log" />

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

0 голосов
/ 29 июня 2011

Я думаю, вы можете использовать

<param name="FileNamePattern" value="C:\\logs\\MyApp.%d{yyyy-MM-dd}.log" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...