Log4J徹底解説 がわかりやすい。
log4netは1.2系であるもののEvaluatorは使える。でもCharsetは使えない。 その結果 .NET 2.0の呪いであるところのSMTPによる日本語送信は、相変わらず呪われたままで UTF-8 でやってくる。 現状ではSmtpAppenderの改造(または自作Appender)にしないと、一般的な日本語メールとして出すことは出来ない。
まあソースの分量は大したことないので、自分用のはCDO経由に書き換える予定。 CdoAppenderとかにすっかなあ。
appenderの設定の中に、利用条件として filter を書くことができる。 あるレベル以上ではなく、「特定のレベルのみ」にしたい場合、LevelMatchFilter を使うことになるが、 こいつはマッチしなかった場合次のフィルタールールにまかせて、最終的にデフォルトはacceptなため、 最後に DenyAllFilter を付けてデフォルトdenyに変更してやる必要がある。
<appender name="InfoSmtpAppender" type="log4net.Appender.SmtpAppender">
...
<filter type="log4net.Filter.LevelMatchFilter">
<levelToMatch value="INFO" />
<acceptOnMatch value="true" />
</filter>
<filter type="log4net.Filter.DenyAllFilter" />
</appender>
上記のようにfilterの設定をしたのは WARN と INFO でメール送信先を変更したかったという理由だ。