Какие значения конфигурации необходимы для настройки Log4j для использования следующего шаблона?
MyApp-Mon.log
MyApp-Tue.log
MyApp-Wed.log
И т. д.
сильный>
С каждым файлом, содержащим журнал дней.
Это звучит достаточно просто сделать с помощью DailyRollingFileAppender от Log4j, но у меня возникли проблемы.
Вот моя текущая конфигурация;
<appender name="daily-file" class="org.apache.log4j.DailyRollingFileAppender">
<param name="Threshold" value="info"/>
<param name="DatePattern" value="'-'EE'.log'"/>
<param name="file" value="MyApp"/>
<param name="Append" value="true" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{EEE MMM dd hh:mm:ss zzz yyyy} %-5p %l - %m%n"/>
</layout>
</appender>
Я создал эту конфигурацию на основе этого блога. пост, но он ведет себя не так, как он описывает. Журнал создается как MyApp без расширения.
Может кто-нибудь помочь мне здесь?
Ответ 1 · рейтинг 1 · Pascal Thivent
Я основал эту конфигурацию на этом сообщении в блоге, но она ведет себя не так, как он описывает. Журнал создается как MyApp без расширения.
Вот что вы сказали Log4J сделать с этой строкой:
<param name="file" value="MyApp"/>
Log4J использует значение этого параметра в качестве имени файла журнала, а шаблон применяется только тогда, когда происходит перенос, как задокументировано:
Например, если для параметра File установлено значение /foo/bar.log, а для DatePattern установлено значение '.'yyyy-MM-dd, 16 февраля 2001 г. в полночь, файл журнала /foo/bar.log будет скопировано в /foo/bar.log.2001-02-16, а ведение журнала за 2001-02-17 будет продолжаться в /foo/bar.log до следующего дня.
Так что мне все кажется нормальным.
Чтобы получить желаемое поведение, вы можете написать свой собственный Appender. Похоже, что Джеймс Штауффер сделал что-то очень похожее (см. этот ответ), но он расширяет FileAppender. Однако его работу несложно адаптировать для подкласса DailyRollingFileAppender.
Ответ 2 · Maxime ARNSTAMM
текущий лог-файл называется MyApp, завтра он будет переименован в Myapp-yesterday и т. д.
но текущий журнал всегда имеет имя по умолчанию.
Ответ 3 · delfuego
Глядя на JavaDocs для DailyRollingFileAppender, все примеры, которые они изложили, имеют определенные числовые шаблоны дат, а не шаблоны названий дней. Вы пытались увидеть, работает ли использование одного из их примеров? Если это так, а у вас нет, то я бы предположил, что DailyRollingFileAppender не поддерживает использование шаблона даты, содержащего "E" (день недели).
Ответ 4 · rsp
В ответ на ваш комментарий к ответу Паскаля:
Будет ли работать ln -s MyApp.log MyApp-NOW.log? Ваш устаревший просмотрщик журналов будет отображать MyApp-NOW.log через символическую ссылку, а log4j может преобразовать MyApp.log в MyApp-TUE.log в полночь.