とりあえずメモ。詳細は後程。
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追記)。