Enterprise Library データベースへログを出力する方法

Enterprise Library でデータベースにログを出力させるための手順である。3.1と4.0で確認済み。
  1. ソースコードがインストールされていない場合は、まずソースコードのインストーラーを起動する。C:\Program Files\Microsoft Enterprise Library 3.1 - May 2007\Enterprise Library May 2007 - Source Code.msi
  2. 次に、ログ用のデータベースを作成する。上記手順でC:\EntLib3Srcフォルダにソースコードをインストールしたならば、 C:\EntLib3Src\App Blocks\Src\Logging\TraceListeners\Database\Scriptsに
    LoggingDatabase.sqlファイルがあるので、これをSQL Server上で実行する。成功した場合はLoggingデータベースができあがる。
  3. アプリケーション構成ファイルをEnterprise Library Configuration Toolで開く。
  4. Data Access Application Blockで新しいconnectionString を追加し、前の手順で作成したLoggingデータベースに接続できるようにする。
  5. Logging Application Blockのセクションを作る。
  6. Trace Listenersに新しい Database Trace Listenerを追加する。
  7. この Database Trace ListenerにDatabaseInstanceName とformatter をセットする。DatabaseInstanceNameはData Access Application Blockの設定で追加したものを使用する。
  8. general カテゴリの Trace Listener Referenceに作成したDatabase Trace Listenerを追加する
  9. プロジェクトに参照設定を追加する。 Microsoft.Practices.EnterpriseLibrary.Logging
    Microsoft.Practices.EnterpriseLibrary.Logging.Database

  10. Webアプリケーションで実行する際は、IIS5の場合はASPNETアカウントにデータベースとストアドプロシージャに適切な権限を与える。
  11. 権限が与えられていない場合は次のようなメッセージが表示される。
    ユーザー 'マシン名\ASPNET' はログインできませんでした。

  12. ログを書き込むときにストアドプロシージャを使用するため、ストアドプロシージャにExecute権限を与える
  13. 権限がないと次のようなメッセージが表示される。
    Message: EXECUTE 権限がオブジェクト 'WriteLog'、データベース 'Logging'、スキーマ 'dbo' で拒否されました。

これらログを出力する以前の問題が発生したときは、当たり前であるが問題がログに出力されない。問題を早く解決するために、Unprocessed Categoryに異なる種類のTrace Listener Referenceを追加しておくとよい。

トラックバック

トラックバックURL:
http://www.apricot-jp.com/cgi/mt/mt-tb.cgi/437

関連情報

Copyright(C) 2007 アーキテクト360 Allrights reserved.