「アプリケーション アーキテクチャ ガイド 2.0」の実装 - Webアプリのログ

アプリケーション アーキテクチャ ガイド 2.0 の [第 21 章: Web アプリケーションの設計] に
[設計に関する具体的な問題]という項目があります。

今回はログの実装について調べ、サンプルを作ってみました。
ここでのログとは、エラー時のログではなく、ユーザーのオペレーションを記録するログです。

サンプルの概要は以下のとおりです。
・ユーザーのオペレーションを記録するため、全ページのLoad時にログを出力する。
・ログの出力にはMicrosoft Enterprise Library 5.0を使用する。
・ログはテキストファイルに出力する。

以下、その実装方法とソースです。

1.参照設定の追加。
Microsoft.Practices.EnterpriseLibrary.Logging.dll
Microsoft.Practices.EnterpriseLibrary.Common.dll
Microsoft.Practices.ServiceLocation.dll
を、C:\Program Files\Microsoft Enterprise Library 5.0\Bin から選択して参照設定に追加します。
WebAppLog_ReferenceMenu


2.Site.Master.csの編集。
全ページのLoad時にログを出力するため、マスターページのPage_Load()にて
ログを出力することにします。

WebAppLog_SiteMasterCs

using Microsoft.Practices.EnterpriseLibrary.Logging;
using Microsoft.Practices.EnterpriseLibrary.Common.Configuration;
をソースの上部に追加しています。

またPage_Load()内で、タイムスタンプ、メッセージを編集して
ログに出力しています。


3.web.configの編集。
Enterprise Library Configuration」を使用し、web.configを編集します。

Enterprise Library Configuration」は「すべてのプログラム」-「Microsoft patterns & practicies」より
選択します。
WebAppLog_EntlibConfig

Enterprise Library Configuration」でWeb.configを開き、以下の設定を行います。

3-1.LoggingTarget Listenersの設定。
Flat File Trace Listenerを新規に追加することで、テキストファイルにログを出力するようにします。
このとき、Formatterには「Text Formatter」を指定します。
WebAppLog_LoggingTargetListeners

3-2.Categories、Special Categoriesの設定。
それぞれのListenersに「Flat File Trace Listener」を指定します。
WebAppLog_Categories

3-3.Log Message Formatterの設定。
出力されるログを分かりやすくするため、Template欄よりTimestamp, Message以外を削除します。
WebAppLog_LogMessageFormatters


4.trace.logの確認。
アプリを実行し、いくつかの画面を遷移してみます。
Web.configと同じフォルダに「trace.log」が出力されるはずです。
WebAppLog_TraceLog
Site.MasterのPage_Load()で設定したタイムスタンプ、メッセージが出力されていることが
分かると思います。


以上です。実際の開発時では、ユーザー名や、イベントが発生したコントロールのIDなどを
出力することになるかと思います。