環境設定
log4netを使用するには、ソリューションエクスプローラの[参照設定]を右クリックして[参照の追加]から「log4net.dll」の追加を行います。そして、Visual Studioによって自動的に作成されるファイル「AssemblyInfo.cs」の最後に下記の一文を追加します。
[assembly: log4net.Config.DOMConfigurator(Watch=true)]
この記述によって「App.config(今回の例では「Log4netSample.exe.config」)」がlog4netの設定ファイルとなります。もし、他のファイルを設定ファイルにしたい場合には「DOMConfigurator(ConfigFile="../../log4net.xml",Watch=true)
」と記述するとそのXMLファイルを読み込むようになります。
使用方法(プログラム部)
アプリケーションの基本的な構成は以下のようになります。
- (プログラム)
logger
と呼ばれるログ出力用のインスタンスを取得する。 - (プログラム)
logger
のメソッドを用いてログを出力する。 - (XMLファイル)出力に使用するアペンダを設定する。
- (XMLファイル)出力したい
logger
階層とアペンダをひもづける。
出力するメッセージはプログラムに記述し、出力に関する設定(出力先やレイアウト等)は構成ファイル「App.config」に記述します。
ログ出力用インスタンス(logger)の取得
ログを出力するためには、logger
と呼ばれるログ出力用のインスタンスを取得する必要があります。そのため、ログ出力を行いたいクラスでは下記の1文を宣言します。
private static readonly log4net.ILog logger = log4net.LogManager.GetLogger(System.Reflection .MethodBase.GetCurrentMethod().DeclaringType);
GetLogger
メソッドの引数にはログ出力対象を判定する際に使用するlogger
の階層を指定します。今回のサンプルではクラスの完全修飾クラス名を引数に設定していますが、基本的にこの書き方で問題ありません。
ログを出力するメソッド
logger
が正しく取得できていれば、logger
のメソッドからログの出力ができます。
logger.Fatal("log4netによるログ出力例~Fatal(致命的障害)"); logger.Error("log4netによるログ出力例~Error(障害)"); logger.Warn("log4netによるログ出力例~Warn(警告)"); logger.Info("log4netによるログ出力例~Info(情報)"); logger.Debug("log4netによるログ出力例~Degug(デバッグ・トレース用)");
log4net
ではレベルと呼ばれる重要度に応じてログ出力メソッドが複数用意されています。Fatal
が最も重い障害メッセージで、Debug
が一番軽い開発用のメッセージになります。レベルの使い分け方は下表1のようになりますので覚えておいてください。
レベル | 標準的な使い分け |
Fatal | システム停止するような致命的な障害 |
Error | システム停止はしないが、問題となる障害 |
Warn | 障害ではない注意警告 |
Info | 操作ログなどの情報 |
Debug | 開発用のデバッグメッセージ |
なお、ログレベルやメッセージを統一することで効率の良いロギングが可能になるため、チーム内にてログ出力のポリシーを共有しておくと良いでしょう。