2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

C# Log4netでログ出力時に設定したメッセージ内容を置き換える

Posted at

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>

エラーログだけとかデバッグログだけとかの設定も可能です。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?