.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(newSystem.IO.FileInfo("c:/conf/log4net.xml"));
上記のコードで指定した場所に、「1.」で確認したlog4net.xmlをコピーして置き、以下の編集を行います。元々の設定ファイル「log4net.xml」にはいろいろな設定があるので、シンプルに、丸ごと以下の記述としました。
<?xmlversion="1.0"encoding="utf-8"?>
<configuration>
<log4net>
<appendername="LogFileAppender"type="log4net.Appender.FileAppender">
<Filevalue="C:logmudebug.log"/>
<AppendToFilevalue="true"/>
<layouttype="log4net.Layout.PatternLayout">
<ConversionPatternvalue="%d [%t] %-5p %c - %m%n"/>
</layout>
</appender>
<root>
<levelvalue="DEBUG"/>
<appender-refref="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 – ログの出力!