aspxページ内(ASP.NET)でログ出力を行う方法(log4net編)
.NET開発環境でログ出力を行うにはいくつか方法がありますが、「log4net」を利用する方法をご紹介します。
また、ASP.NETと普通のアプリケーションでは設定が少し異なりますが、今回はASP.NETの例を。
log4netを利用する理由ですが、以下の理由があります。
ファイルのロックを考慮する必要が少ない・・・自前でテキストファイルに各方式だと、複数のスレッドから同時に書かれた場合などに、ファイルをロックして、書き込みエラーが出る場合があります。こういった考慮をlog4netがやってくれるので、便利です。
ログのローテーションをやってくれる・・・運用が長期に及ぶと、どうしても、ログファイルの容量が大きくなってきてしまいます。その場合、ファイルをリネームして退避する処理を記述しなければなりませんが、log4netなら簡単な設定ファイルの記述で実行してくれます。
では、早速、ASP.NETのプロジェクトにlog4netのログ出力環境をセットアップしてみましょう。
1.log4netのダウンロード
まず、log4netのプロジェクトページからモジュールをダウンロードしてきます。
私は今回は、「log4net-1.2.11-bin-newkey.zip」をダウンロードしました。
落としたファイルを解凍すると、「…log4net-1.2.11binnet」というディレクトリができます。
この中に.NETのバージョンごとのフォルダがありますので、自分のターゲットに適したフォルダを見てみましょう。私はターゲットは.net ver3.5なので、「3.5」フォルダの中になります。
その中に、「log4net.dll」と「log4net.xml」があります。
2.参照を追加
「参照の追加」から、先程確認した「log4net.dll」を追加します。

3.Global.asaxの追加と編集
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"));
4.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>
5.ログ出力のコードを記述
では、実際にログを出力したいクラスに記述を行います。
クラスの最初に、
log4net.ILog logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
を書き、出力部分で、
logger.Debug("ログの出力!");
と書きます。
実行してみると、以下のように書かれました。
2012-06-14 13:42:10,926 [4] DEBUG SFDCService._Default – ログの出力!
ASP.NETでVisualStudioのデバッグコンソールにも出力したい場合は、別記事を参考にしてください。
[…] ードなので、「Console.WriteLine」などに適宜変更してください。 log4netによるログ出力を行いたい場合は、別記事「aspxページ内(ASP.NET)でログ出力を行う方法(log4net編)」を参照してください。 […]
[…] 前回の記事でASP.NETでログ出力を行う方法を説明しました。 […]