Создание ежедневников с Log4j? - PullRequest
0 голосов
/ 18 ноября 2009

Какие значения конфигурации необходимы для настройки Log4j для использования следующего шаблона?
MyApp-Mon.log
MyApp-Tue.log
MyApp-Wed.log
Etc

С каждым файлом, содержащим журнал дней.

Это звучит достаточно просто, чтобы сделать это с 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 без расширения.

Может кто-нибудь помочь мне здесь?

Ответы [ 4 ]

1 голос
/ 18 ноября 2009

Я создал этот конфиг на этом посте в блоге, но он ведет себя не так, как он описывает. Журнал создается как MyApp без расширения.

Это то, что вы сказали Log4J делать с этой строкой:

<param name="file" value="MyApp"/>

Log4J использует значение этой опции в качестве имени файла журнала, а шаблон применяется только при переворачивании, как задокументировано :

Например, если установлена ​​опция Файл в /foo/bar.log и DatePattern установлено на '.'yyyy-MM-dd, 2001-02-16 в полночь, файл журнала /foo/bar.log будет скопирован в /foo/bar.log.2001-02-16 и ведение журнала за 2001-02-17 продолжится в /foo/bar.log, пока он не перевернется на следующий день.

Так что для меня все выглядит нормально.

Чтобы получить желаемое поведение, вы можете написать свой собственный Appender. Похоже, Джеймс Штауффер сделал что-то очень похожее (см. этот ответ ), но он расширяет FileAppender. Должно быть легко адаптировать его работу для подкласса DailyRollingFileAppender.

0 голосов
/ 18 ноября 2009

В ответ на ваш комментарий к ответу Паскаля:

Будет ли ln -s MyApp.log MyApp-NOW.log работать? Ваша старая программа просмотра журналов будет показывать MyApp-NOW.log по символической ссылке, а log4j может перевернуть MyApp.log в MyApp-TUE.log в полночь.

0 голосов
/ 18 ноября 2009

Глядя на JavaDocs для DailyRollingFileAppender , все приведенные ими примеры имеют конкретные числовые шаблоны даты, а не шаблоны имени дня. Вы пытались увидеть, работает ли один из их примеров? Если это так, а ваш - нет, то я предполагаю, что DailyRollingFileAppender не поддерживает использование шаблона даты, содержащего «E» (день недели).

0 голосов
/ 18 ноября 2009

текущий лог-файл называется MyApp, затем завтра он будет переименован Myapp-вчера и т. Д.

но текущий журнал всегда имеет имя по умолчанию.

...