7

JavaアプリにSMTPAppenderを設定しました。

<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>

INFOタイプではなく、ERRORログタイプのみを受け取ります。LevelMinを変更しましたが、何も変更しませんでした。Thresoldを挿入しましたが、何も変更しませんでした。

誰かが何か提案がありますか?

4

1 に答える 1

16

SMTPAppenderは、設計上、ERROR以上のメッセージのみをログに記録します。このレベルはプロパティの影響を受けません。追加された状態のドキュメント:

デフォルトでは、ERROR以上の重大度のメッセージが追加されたときに電子メールメッセージが送信されます。トリガー基準は、TriggeringEventEvaluatorを実装するクラスの名前でevaluatorClassプロパティを設定するか、TriggeringEventEvaluatorのインスタンスでevaluatorプロパティを設定するか、指定されたクラスがTriggeringEventEvaluatorを実装するtriggeringPolicy要素をネストすることで変更できます。

参照:クラスSMTPAppender

最初のエラーの後にのみINFOメッセージが表示されるのは、エラーのコンテキストを示すためにエラーの前の「n」個の最新のログ行を表示するbufferSizeプロパティが原因です。

これに関するさらなる調査は、「extrasコンパニオン」にTriggerEventEvaluatorに必要なインターフェースの実装があることを示しています

これは、 ApacheDownloadMirrorsからダウンロードできます。

これをプロジェクトに含めると、log4j.xmlのSMTPAppender定義に以下を追加できます(プロパティ形式はサポートされていないことに注意してください)。

  <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>
于 2011-11-17T16:24:40.450 に答える