Log4netでログ内容を置き換える
Log4netはよく使っていますが、普通にログ出力くらいの機能しか使っていなかったのと
あまり日本語のサイトも引っかからなかったので一応書いて残しておきます。
※当たり前すぎて書いてないだけかもしれませんが…
ログ出力する内容を一律なんか置き換えたりしたい!
そんなことたまにありますよね。
そういう時はこうすればOKのようです。
まずlog4netのPatternLayoutConverterを継承したクラスを作ります。
名前はなんでもいいです。
Convertメソッドをオーバーライドします。
MessageConverter.cs
namespace MyApp.Log
{
public class MessageConverter : PatternLayoutConverter
{
protected override void Convert(TextWriter writer, LoggingEvent loggingEvent)
{
// なんか色々文字置換とかの処理をここでしましょう
// ↓このままだと、設定されたメッセージがそのまま出力されるので、いい感じに変えてください
writer.Write(loggingEvent.RenderedMessage);
}
}
}
xmlのlayoutタグ内のクラスの指定やら云々
log4net.xml
<layout type="log4net.Layout.PatternLayout">
<!-- ↓このconverterタグを追加 -->
<converter>
<!-- ↓conversionPatternのmessageを指定してます -->
<name value="message" />
<!-- ↓クラスはここで指定 -->
<type value="MyApp.Log.MessageConverter" />
</converter>
<!-- ↓これはいい感じにログを出すのに形式書いてるだけなので元からあるんじゃないかと -->
<conversionPattern value="%date{yyyy-MM-dd HH:mm:ss,fff} (%class.%method:%line) - %message%newline" />
</layout>
エラーログだけとかデバッグログだけとかの設定も可能です。