с SMTPAppender я получаю только ОШИБКУ, а не ИНФО тип элементов журнала - PullRequest
7 голосов
/ 07 апреля 2011

Я настроил SMTPAppender в свое приложение Java.

<appender name="AdministratorEmail" class="org.apache.log4j.net.SMTPAppender">
  <param name="Threshold" value="info" />
  <param name="BufferSize" value="512" />
  <param name="SMTPHost" value="smtp.sss.intranet" />
  <param name="From" value="adminEbookMaker@sss.intranet" />
  <param name="To" value="user@sss.it" />
  <param name="Subject" value="errors" />       
  <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" value="[%d{ISO8601}]%n%n%-5p%n%n%c%n%n%m%n%n" />
  </layout>
  <filter class="org.apache.log4j.varia.LevelRangeFilter">
    <param name="LevelMin" value="info" />
    <param name="LevelMax" value="fatal" />
  </filter>
</appender>

Я получаю только тип журнала ОШИБКА, а не тип ИНФО! Я изменил LevelMin , но ничего, я вставил Thresold , но ничего!

Есть ли у кого-нибудь какие-либо предложения?

1 Ответ

16 голосов
/ 17 ноября 2011

Конструктор SMTPAppender регистрирует только сообщения об ОШИБКАХ и выше. Этот уровень не может зависеть от свойств. Документация для приложенных состояний:

По умолчанию сообщение электронной почты отправляется при добавлении сообщения об ОШИБКЕ или сообщении более высокой важности. Критерии запуска можно изменить, установив для свойстваvaluatorClass имя класса, реализующего TriggeringEventEvaluator, задав для свойства оценщика экземпляр TriggeringEventEvaluator или вложив элемент triggeringPolicy, где указанный класс реализует TriggeringEventEvaluator

См .: Класс SMTPAppender

Тот факт, что вы видите сообщения INFO только после первой ОШИБКИ, обусловлен свойством bufferSize, которое показывает 'n' самых последних строк журнала перед ошибкой, чтобы дать контекст этой ошибке.

Дальнейшие исследования по этому вопросу показывают, что в «extras companion» реализован необходимый интерфейс для TriggerEventEvaluator

Это можно загрузить с: Apache Download Mirrors

Если вы включите это в свой проект, то можете добавить следующее в определение SMTPAppender в log4j.xml (обратите внимание, что формат свойств не поддерживается!)

  <appender name="SMTP" class="org.apache.log4j.net.SMTPAppender">
...
    <triggeringPolicy  class="org.apache.log4j.rolling.FilterBasedTriggeringPolicy">
      <filter class="org.apache.log4j.filter.LevelRangeFilter">
        <param name="levelMin" value="INFO" />
      </filter>
    </triggeringPolicy>
...
  </appender>
...