2013-09-03 3 views
1

Я использую Log4J 2.0 для создания журналов для проекта, который я делаю. Журналы небольшие, и у меня есть требование поддерживать их в течение 3 месяцев. Я хотел бы иметь журнал текущего месяца с 3 архивами (каждый из которых содержит месячные журналы).log4j2 ежемесячный журнал опрокидывания

Проблема, с которой мне нужна помощь, заключается в настройке log4j для поворота журналов в начале месяца (или в конце месяца).

Практически все, что я нашел, исследуя эту проблему, это log4j 1.x и говорит о параметре datePattern, который, как представляется, не существует в 2.0.

Вот мой log4j2.xml файл:

<?xml version="1.0" encoding="UTF-8"?> 
<configuration status="warn" name="NKMS" packages=""> 
    <appenders> 
     <FastRollingFile name="LogFile" fileName="logs/Tier2HttpServer.log" filePattern="logs/app-%d{yyyy-MM-dd}.log.gz"> 
      <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/> 
      <PatternLayout pattern="%d %p %c{1.} [%t] %m%n"/> 
      <Policies> 
       <TimeBasedTriggeringPolicy/> 
       <SizeBasedTriggeringPolicy size="250 MB"/> 
      </Policies> 
      <DefaultRolloverStrategy max="4"/> 
     </FastRollingFile> 
     <Console name="STDOUT" target="SYSTEM_OUT"> 
      <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/> 
     </Console> 
    </appenders> 
    <loggers> 
     <logger name="mil.navy.nrl.itd.xml_filter" level="trace"/> 
     <root level="trace"> 
      <appender-ref ref="STDOUT"/> 
      <appender-ref ref="LogFile"/> 
     </root> 
    </loggers> 
</configuration> 

Я пишу INFO и выше в файл журнала и отладки в консоли (на данный момент). Файлы записываются в порядке, но они кажутся ежедневно опрокидывающимися (по-видимому, по умолчанию).

Я попытался изменить файл FastRollingFile: filePattern на «.yyyy-MM», но это приводит к возникновению странных вещей (только одна запись записывается в файл, и архив сразу создается).

Я загрузил источник для log4j-2.0-beta8, а PatternProcessor анализирует значение RolloverFrequency, которое содержит перечисление RolloverFrequency.MONTHLY, но опять же я не могу понять, как его реализовать/использовать.

Как всегда, любая помощь или совет, которые вы можете предоставить, были бы ПРИГОВОРЕНЫ!

-Ace

ответ

0

Возможно, вы обнаружили ошибку. Я бы ожидал, что filePattern из "logs/app-%d{yyyy-MM}.log.gz" даст вам то, что вы ищете.

Чтобы прояснить мое понимание проблемы: начальное событие журнала немедленно вызывает опрокидывание (создание архивного файла). Вместо этого он должен собирать события журнала в файл журнала, а не перекатываться до конца/начала месяца. Правильно ли это описание? Есть ли еще одна проблема в дополнение к этому первоначальному ненужному опрокидыванию?

Могу ли я попросить вас поднять билет JIRA для этого? https://issues.apache.org/jira/browse/LOG4J2

+0

Это правильно. Архив немедленно создается. Кроме того, только одна запись создается во вновь созданный журнал, и сбор журналов прекращается. Если я перезапущу приложение, тот же процесс повторяется. – AceFunk

+0

JIRA билет создан. Мой первый, поэтому я надеюсь, что все правильно. :) https://issues.apache.org/jira/browse/LOG4J2-385 – AceFunk

+0

Это ошибка Log8J 2.0 beta8. Файл filePattern выше должен действительно заставлять журналы опрокидываться ежемесячно. – AceFunk

Смежные вопросы