とりあえずメモ。詳細は後程。
log4netはログ出力をさまざまな形で出力でき、なによりその書式、出力先を外部の設定ファイルで自在に指定できることが魅力です。で、その「出力先」の1つとして「メール」があるのですが……。自分は使ったことありませんが、出力先設定に「SmtpAppender」を指定して、しかるべき設定を行えばログを出す側は「(log4netのObject).Error("メッセージ")」のような処理を書くだけでメールが飛びます。
詳細は下記リンク先の設定サンプルにある「SmtpAppender」に。
設定例
実際の設定例はこちら。
<appender name="SmtpAppender" type="log4net.Appender.SmtpAppender">
<to value="to@domain.com" />
<from value="from@domain.com" />
<subject value="test logging message" />
<smtpHost value="SMTPServer.domain.com" />
<bufferSize value="512" />
<lossy value="true" />
<evaluator type="log4net.Core.LevelEvaluator">
<threshold value="WARN"/>
</evaluator>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%newline%date [%thread] %-5level %logger [%property{NDC}] - %message%newline%newline%newline" />
</layout>
</appender>
注意点
1か月後にはまったのですが、SmtpAppenderは下手をするとメールボムの発生源となりうることから、「bufferSize」に指定された件数に到達するまでメールは出ないようになっているようです。この「件数」、何のことかわからなかったのですがどうやら「行数」のようなもののようで……。
というわけで、リアルタイムに「エラー、即、メール」という要望がある場合、このバッファーサイズを調整する必要があります(2014/3/4追記)。