log4netの導入
Posted by mkamo on 2008年4月18日
log4netを使ってとりあえずログ出力をする方法は以下のとおり.
- 参照の設定
- [ソリューションエクスプローラ]で[参照設定]を右クリックして[参照を追加]を選択する
- [参照]タブでlog4net.dllを選択する
- AssemblyInfo.csの編集
- AssemblyInfo.csに以下の一行を追加する
[assembly: log4net.Config.XmlConfigurator(Watch=true)]
- AssemblyInfo.csに以下の一行を追加する
- 構成ファイルの追加
- [ソリューション エクスプローラ]でプロジェクトを右クリックして[追加]>[新しい項目]を選択する
- [アプリケーション構成ファイル]を選択し,”app.config”ファイルを作成する
- [ソリューション エクスプローラ]で作成したファイルを右クリックして[プロパティ]を選択する
- [プロパティ]の[詳細]>[出力ディレクトリにコピー]を”新しい場合はコピーする”に設定する
- 作成したファイルを以下のように編集する
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> </configSections> <log4net> <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" /> </layout> </appender> <root> <level value="ALL" /> <appender-ref ref="ConsoleAppender" /> </root> </log4net> </configuration>
- ロギングコードの追加
- loggerの取得のためのコードは以下のとおり.ログ出力をするクラスのstaticフィールドとして宣言しておく.GetLogger()のパラメタはtypeof(型名)と同じ結果になるが,どの型が対象でも同じコードになるようにリフレクションを使う.また,usingを追加しなくてよいようにクラスはFQNで指定する
private static readonly log4net.ILog LOGGER = log4net.LogManager.GetLogger( System.Reflection.MethodBase.GetCurrentMethod().DeclaringType ); - ログ出力のためのコードは以下のとおり
LOGGER.Fatal("fatal message"); LOGGER.Error("error message"); LOGGER.Warn("warn message"); LOGGER.Info("info message"); LOGGER.Debug("debug message");
- loggerの取得のためのコードは以下のとおり.ログ出力をするクラスのstaticフィールドとして宣言しておく.GetLogger()のパラメタはtypeof(型名)と同じ結果になるが,どの型が対象でも同じコードになるようにリフレクションを使う.また,usingを追加しなくてよいようにクラスはFQNで指定する
- デバッグ実行すると[出力]ウィンドウに以下のようなログが出力される
2008-04-18 14:50:01,656 [10] FATAL WindowsFormsApplication1.Form1 [(null)] - fatal message 2008-04-18 14:50:01,656 [10] ERROR WindowsFormsApplication1.Form1 [(null)] - error message 2008-04-18 14:50:01,656 [10] WARN WindowsFormsApplication1.Form1 [(null)] - warn message 2008-04-18 14:50:01,656 [10] INFO WindowsFormsApplication1.Form1 [(null)] - info message 2008-04-18 14:50:01,656 [10] DEBUG WindowsFormsApplication1.Form1 [(null)] - debug message