以下のように SMTPAppender を使用します。
<appender name="SMTP" class="org.apache.log4j.net.SMTPAppender">
<param name="Threshold" value="ERROR" />
<param name="BufferSize" value="1" />
<param name="To" value="宛先アドレス" />
<param name="From" value="送信元アドレス" />
<param name="Subject" value="メールタイトル" />
<param name="SMTPHost" value="SMTPサーバのIPアドレス" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
</layout>
</appender>
Threshold パラメータで ERROR 以上にログレベルを絞り、宛先アドレス、タイトル等を設定しています。アペンダクラスにはorg.apache.log4j.net.SMTPAppender を使用します。
BufferSize パラメータはログイベントのバッファサイズで、 ERROR 及び FATAL 以外のログイベントが発生すると、このバッファへ格納されます。ERROR または FATAL のログイベントが発生すると、(バッファサイズに関わらず)バッファに貯められたログイベントと今回発生した ERROR または FATAL のログイベントを含んだメールが送信されます(バッファは空になります)。
上の設定では ERROR, FATAL 以外のログイベントを送信対象から外すために、Threshold
パラメータによって対象ログレベルを ERROR 以上に絞っています。そのため、発生するログイベントは、ERROR
, FATAL だけであり、バッファにログイベントが貯められることなく、即座にメールが送信されます。
上では BufferSize パラメータの値を 1 にしていますが、これを例えば 5 に設定し、ERROR, FATAL と連続してログイベントが発生しても、バッファリングは行われず、メールはそれぞれのイベントに対して即座に1通づつ送信されることに注意して下さい。ERROR, FATAL はバッファサイズに関わらず、発生したら即座にメールが送信されるからです。