.NET開発環境でログ出力を行うにはいくつか方法がありますが、「log4net」を利用する方法をご紹介します。
また、ASP.NETと普通のアプリケーションでは設定が少し異なりますが、今回はASP.NETの例を。
log4netを利用する理由ですが、以下の理由があります。
- ファイルのロックを考慮する必要が少ない・・・自前でテキストファイルに各方式だと、複数のスレッドから同時に書かれた場合などに、ファイルをロックして、書き込みエラーが出る場合があります。こういった考慮をlog4netがやってくれるので、便利です。
- ログのローテーションをやってくれる・・・運用が長期に及ぶと、どうしても、ログファイルの容量が大きくなってきてしまいます。その場合、ファイルをリネームして退避する処理を記述しなければなりませんが、log4netなら簡単な設定ファイルの記述で実行してくれます。
では、早速、ASP.NETのプロジェクトにlog4netのログ出力環境をセットアップしてみましょう。
log4netのセットアップ手順
まず、log4netのプロジェクトページからモジュールをダウンロードしてきます。
私は今回は、「log4net-1.2.11-bin-newkey.zip」をダウンロードしました。
落としたファイルを解凍すると、「…log4net-1.2.11binnet」というディレクトリができます。
この中に.NETのバージョンごとのフォルダがありますので、自分のターゲットに適したフォルダを見てみましょう。私はターゲットは.net ver3.5なので、「3.5」フォルダの中になります。
その中に、「log4net.dll」と「log4net.xml」があります。
「参照の追加」から、先程確認した「log4net.dll」を追加します。
Global.asaxがプロジェクトに存在していない場合は、「新しい項目の追加」から、「グローバル アプリケーション クラス」を追加しましょう。
それでは、Global.asaxのメソッド、Application_Startに以下の一文を記述します。
//VB.netの場合
log4net.Config.XmlConfigurator.Configure(New System.IO.FileInfo(
"c:/conf/log4net.xml"
));
//C#の場合
log4net.Config.XmlConfigurator.Configure(
new
System.IO.FileInfo(
"c:/conf/log4net.xml"
));
上記のコードで指定した場所に、「1.」で確認したlog4net.xmlをコピーして置き、以下の編集を行います。元々の設定ファイル「log4net.xml」にはいろいろな設定があるので、シンプルに、丸ごと以下の記述としました。
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
configuration
>
<
log4net
>
<
appender
name
=
"LogFileAppender"
type
=
"log4net.Appender.FileAppender"
>
<
File
value
=
"C:logmudebug.log"
/>
<
AppendToFile
value
=
"true"
/>
<
layout
type
=
"log4net.Layout.PatternLayout"
>
<
ConversionPattern
value
=
"%d [%t] %-5p %c - %m%n"
/>
</
layout
>
</
appender
>
<
root
>
<
level
value
=
"DEBUG"
/>
<
appender-ref
ref
=
"LogFileAppender"
/>
</
root
>
</
log4net
>
</
configuration
>
では、実際にログを出力したいクラスに記述を行います。
クラスの最初に、
log4net.ILog logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
を書き、出力部分で、
logger.Debug(“ログの出力!”);
と書きます。
実行してみると、以下のように書かれました。
2012-06-14 13:42:10,926 [4] DEBUG SFDCService._Default – ログの出力!