Log4net(12) ConversionPatternの詳細
ログファイルの出力フォーマットを ConversionPattern で指定する際に、%記号が何に変換されるかを解説しよう。とは言っても、
http://codezine.jp/a/article.aspx?aid=71
ここを参照すれば、ほぼわかるのだが、一応例とともに説明しておこう。
サンプルプログラム
using System; using System.Collections.Generic; using System.Text; namespace sample_Log4netForConsole2 { class Program { static void Main(string[] args) { LogTest l = new LogTest(); log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo(@"../../log4net.xml")); log4net.ILog logger = log4net.LogManager.GetLogger("GetLogger-Main"); log4net.MDC.Set("key1","val1"); log4net.MDC.Set("key2","val2"); log4net.NDC.Push("level-1"); log4net.NDC.Push("level-2"); l.func(logger); log4net.NDC.Pop(); log4net.NDC.Pop(); log4net.MDC.Clear(); } } class LogTest { public void func(log4net.ILog logger) { System.Threading.Thread.Sleep(1500); try { throw new Exception("thorw exception by myself"); } catch(Exception e) { logger.Error("This is Error message", e); } } } }
%記号が何に変換されるか
記号 | 説明 | 出力される結果 |
---|---|---|
%literal{hoge %n hoge} | 文字列をそのまま出力する(%を出力したい場合など) | hoge %n hoge (%nが改行コードではなく、そのまま出力される) |
%newline | 改行 | 改行コード |
%n | ||
%logger | ロガー名 | GetLogger-Main |
%c | ||
%type | クラス名 | sample_Log4netForConsole2.LogTest |
%class | ||
%C | ||
%date{yyyy-MM-dd HH:mm:ss,fff} | ミリ秒までの現在日時 | 2006-06-23 23:21:44,281 |
%date{dd MMM yyyy HH:mm:ss,fff} | 24 Jun 2006 00:46:30,640 | |
%d(何もフォーマットを指定しなくてもOK) | 2006-06-23 23:21:44,281 | |
%exception | 例外の内容(ただし、例外オブジェクトを引数に指定すると、%exception が無くても例外の内容が出力されるので、無意味かもしれない) | System.Exception: thorw exception myself at sample_Log4netForConsole2.LogTest.func(ILog logger) in C:\D\プログラム\c_sharp2005\sample_Log4netForConsole2\sample_Log4netForConsole2\Program.cs:line 33 |
%F | ログ出力した際のファイルのフルパス | C:\D\プログラム\c_sharp2005\sample_Log4netForConsole2\sample_Log4netForConsole2\Program.cs |
%file | ||
%l | ログ出力した際の関数名とファイルのフルパス | sample_Log4netForConsole2.LogTest.func(C:\D\プログラム\c_sharp2005\sample_Log4netForConsole2\sample_Log4netForConsole2\Program.cs:37) |
%location | ||
%L | 行数 | 37 |
%line | ||
%m | 指定したメッセージ | This is Error message |
%message | ||
%M | メソッド名 | func |
%method | ||
%p | ログレベル | ERROR |
%level | ||
%P | MDCにセットしたキーと値の文字列(スレッド毎に固有の値となるので、マルチスレッド時に重宝する、、、ハズ) | {key2=val2, log4net:HostName=workgroup, key1=val1} |
%property | ||
%properties | ||
%X | ||
%mdc | ||
%r | Loggerのセットアップが完了してからの経過時間(ミリ秒) | 1812 |
%timestamp | ||
%t | ログを生成したスレッド番号(System.Threading.Thread.CurrentThread.ManagedThreadId) | 1 |
%thread | ||
%x | NDCにPushした文字列を空白区切りで出力する(これもスレッド固有の値となるので、マルチスレッド時に重宝する、、、ハズ) | level-1 level-2 |
%ndc | ||
%a | 実行ファイル名 | sample_Log4netForConsole2.exe |
%appdomain | ||
%u | よくわかんない | 何も出力されないのだが・・ |
%identity | ||
%utcdate | ログを出力した日時をUTCでミリ秒単位まで出力する。フォーマットは、%date を参照 | 2006-06-23 14:47:42,343 |
%utcDate | ||
%UtcDate | ||
%w | ユーザ名を出力 | workgroup\shima |
%username |