連載:VBで実践! 外部コンポーネント活用術オープンソースのロギング・サービス
デジタルアドバンテージ 岸本 真二郎 |
![]() |
|
|
|
Webアプリケーションでログ作成
これまでWindowsアプリケーションでのログ出力について説明してきました。log4netの構成はWindowsアプリケーションでもWebアプリケーションでも変わりませんが、ASP.NET 2.0の場合には、log4netの構成情報を別ファイルで用意しておくのが簡単です。
VBのWindowsアプリケーションの場合はapp.configファイルに構成情報を記述することで、ビルド後に実行ファイルと同じ名前に「.config」という拡張子の付いたファイルが生成されて、log4netは構成情報をそこから読み込みます(デフォルトの挙動)。これに対して、ASP.NET 2.0の場合は、(設定にもよりますが)ビルドを行っても実行形式のバイナリを生成しないので、log4netが構成情報を読み込めない場合があります。そのためASP.NET 2.0では構成情報を記述したファイルを別途用意し、そのファイルを読み込む方が確実です。
Webアプリケーションでは、以下の手順でlog4netの設定を行います。
Webアプリケーションのプロジェクトを新規作成した後、log4net.dllへの参照を追加します(Windowsアプリケーションの場合と同じ)。次にプロジェクトに「グローバル・アプリケーション・クラス(Global.asax)」を追加します。
そして、このGlobal.aspxに含まれる、アプリケーションのスタートアップ時に実行されるメソッドであるApplication_Startメソッドの中に、log4netの構成ファイルを指定するコードを記述します。これにより独自の構成情報を利用できるようになります。
| |
| リスト13 Global.asaxに記述する内容 |
構成ファイルの指定は絶対パスで行います。上記の例では、Webサーバのドキュメント・ルートに対応するパス(デフォルトでは「C:\InetPub\wwwroot」)にある構成ファイル(log4net.config)を読み込むように指示しています。
構成ファイルの中身は、ここまでにapp.configで記述した<log4net>要素をそのままコピーすればよいでしょう。ファイルの先頭にXMLの宣言を行うことと、日本語を記述する場合にはエンコードをUTF-8で行う(XML宣言に合わせる)ことを忘れないように。
| |
| リスト14 log4net.configの記述例 |
ログの出力先としてファイルを指定する場合は、ASP.NETを実行しているアカウント(ASPNETもしくはNETWORK SERVICE)の権限と、ログの生成先フォルダの権限に注意する必要があります。
ASP.NETを実行しているアカウントに対する書き込み権限のないフォルダにログを作成する場合は、事前にフォルダのセキュリティ設定を変更(ASP.NETの実行アカウントに書き込み権限を与える)する必要があります。ファイル名にフォルダを指定しない場合(例えば「<param name="File" value="log4net_log.txt" />」)は、Webアプリケーションの仮想ディレクトリに対応するフォルダにファイルが作成されます。
ソース・コード上でのlogオブジェクトの取得や、ログを生成するメソッドは、Windowsアプリケーションの場合と同じです。
| |
| リスト15 Webアプリケーションでのログ出力を行うコード例 |
最後に
log4netは非常に高機能なログ生成ツールです。設定はちょっと複雑なのですが、最低限必要な設定さえ押さえておけば、とても便利に使用できます。
残念ながら日本語のドキュメントが用意されておらず、英文のドキュメントもリファレンス的な内容が乏しいのですが、そこはオープンソースのいいところで、不明な部分は直接ソース・コードを見てしまう(残念ながらC#で記述されていますが)ということもできます(実際、表2のレイアウトのパターンもソース・コードから取り出しました)。
log4netでログを作成する際に注意しておきたいのは、利用するログ・レベルについて基準をプログラム作成前にしっかりと決めておくことです。ソース・コード上に記述されたログ生成のコードを後から変更するのは大変ですから、無計画にDebug(……)やError(……)などを記述してしまっては、後になってログ・レベルを変更しても不要なログが生成され続け、ログの収集がかえって大変になってしまいます。
■Visual Studio 2008でも大丈夫?
現在配布されているlog4netに含まれるライブラリは .Net Framework 1.0、1.1および2.0用ですが、2.0用は英語版のVisual Studio 2008でも動作することは確認できました(サンプル・アプリケーションの動作範囲のみですが)。もちろんダウンロードしたアーカイブファイルにはソース・ファイルが含まれていますので、Visual Studio 2008でビルドして利用することも可能でしょう。![]()
| INDEX | ||
| VBで実践! 外部コンポーネント活用術 | ||
| オープンソースのロギング・サービス「log4net」を使う | ||
| 1.log4netを使ったサンプルを作ってみる | ||
| 2.log4netの特徴/log4netの構成 | ||
| 3.アペンダの設定例 | ||
| 4.Webアプリケーションでログ作成 | ||
| 「VBで実践! 外部コンポーネント活用術」 |
TechTargetジャパン
- 新人プログラマーのためのInsider.NETの歩き方 2012 (2012/5/22)
晴れて.NETプログラマーとなる新人が効率的に開発技術を習得するには? 大量にある記事群の中から新人が読むべきお勧めを厳選して紹介 - jQuery MobileでJavaScriptプログラミング (2012/5/17)
jQuery Mobileは手軽なだけでなく、JavaScriptのAPIも充実しており、独自機能の実装もできる。今回は「グローバル設定」と「イベント」を解説 - Windows上で開発するための開発環境構築入門 (2012/5/16)
Windowsを使ってチームで開発している? なのにサーバOSを設定・運用した経験がない? そうなら、今すぐ学ぼう - 「コントラクト」でアプリのサンドボックスを乗り越える! (2012/5/11)
Metroスタイル・アプリはサンドボックスの中で動作する。それを乗り越えてほかのアプリと連携する仕組み「コントラクト」を解説
|
|
キャリアアップ
は.NET開発者中心に生まれ変わりました
スポンサーからのお知らせ
.NET開発者中心コーナー
- - PR -
イベントカレンダー
- - PR -


