@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

[EntLib2.0]発生したExceptionの内容をDBへ書き込む方法

1
投稿者投稿内容
ユーレック
常連さん
会議室デビュー日: 2005/07/05
投稿数: 26
投稿日時: 2006-10-27 13:58
OS    :WindowsXP Pro
Server  :SQLServer2000
開発環境 :Microsoft Visual Studio 2005

お世話になります。

現在、上司から「Enterprise Library 2.0」を利用したサンプルの作成を命じられています。
内容としては、プログラム実行中に発生したExceptionをTry Catchで捕まえ、
Exception Handling Application Block (以下EHAB)
Logging Application Block      (以下LAB)
Data Access Application Block    (以下DAAB)
を使い、データベース及びメールにてExceptionの内容を通知するというものです。

Exception Handling Application Blockを使ったExceptionの吐き出しは完全にお手上げ。
ひとまず保留としました。

ひとまずLABとDAABの連携で、ログをDBへ書き込むとこから手をつける事にしたのですが。
Database Trace Listenerの使い方がさっぱりわかりません。

Formatted EventLog TraceListener がイベントログへの書き出し
FlatFile TraceListener がLogファイルへの書き出しだったので
Database Trace Listener はDBへの書き出しだろう。
という推測で色々調べてみたのですが…
まず、DBのどのテーブルへどのような内容を書き込むのか、
そういった設定をどこから行うのかわかりませんでした。
(それ以前に目的の機能を提供するものではないのかもしれませんが)


実際に以下のような検証用のコードを記述しましたが、
実行すると特にエラーも出ずに最後まで処理が流れます。

Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Try

Dim int As Integer = Integer.Parse("abc")
Catch ex As Exception

Dim log As New LogEntry
log.Message = ex.Message
Logger.Write(log)

End Try
End Sub
End Class

参照設定の追加
Microsoft.Practices.EnterpriseLibrary.Common.dll
Microsoft.Practices.EnterpriseLibrary.Data.dll
Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.dll
Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging.dll
Microsoft.Practices.EnterpriseLibrary.Logging.Database.dll
Microsoft.Practices.EnterpriseLibrary.Logging.dll
Microsoft.Practices.ObjectBuilder.dll
System.configuration

app.config の設定はほとんどEnterprise Library Configurationで作った初期設定のままです。
DatabaseInstance に、DB接続のためのConnection Stringを指定
Formatter に、Text Formatterを指定しています。
また、Cドライブ直下のLogファイルと、イベントログにExceptionの内容を吐き出すように設定しています。

ログファイルとイベントログには正常に出力されています。
DBへのログの吐き出しはどーなってしまったか皆目検討もつきません(汗
EntLibに関する情報が少ないのは承知しておりますが、
どなたかEntLb2.0を使った、DBへのExceptionの内容を登録する方法をご存知ないでしょうか?
ユーレック
常連さん
会議室デビュー日: 2005/07/05
投稿数: 26
投稿日時: 2006-10-27 18:07
http://forums.asp.net/thread/1292242.aspx
こんなページを見つけた。
Database Trace Listener を使ったプログラムでエラーが起きるとか、
そんな内容のようだ

投稿されているConfigの内容な細かい部分で違うものの大筋で同じだ。
またエラーの内容は必要なdllへの参照が足りなかったというものらしい。
それで正常に動作した、という事なので…

やっぱり、私の作ったプログラムも正常に動いているのだろうか?
私が機能を勘違しているだけかもしれない。
正常に動いてるとすれば、どこかしらにExceptionの内容が記録されると思うのだが…
ロギングという処理そのものを私は勘違いしてるのかもしれない。。。
引き続き調べます。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-10-27 23:36
http://www.atmarkit.co.jp/fdotnet/entlib/index/index.html

これはすでに読んだ?
_________________
ユーレック
常連さん
会議室デビュー日: 2005/07/05
投稿数: 26
投稿日時: 2006-10-29 20:08
お返事ありがとうございます。
記事は読んでいます。

が、不安になったので読み直しました。
連載でLoggingABについて解説しているときのVerが1.1で、
やはり直接の答えはないようですが…
多分、私がやりたいのは1.1で言うDatabase Sinkになるのでしょうね。
そういえば、Coreに移動したInstrumentationは使っていませんが…
これの設定が必要なのかもしれません、会社でまた試してみたいと思います。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-10-29 20:33
http://enterpriselibrary.jp/
この辺もチェックしてみましょう。
_________________
ユーレック
常連さん
会議室デビュー日: 2005/07/05
投稿数: 26
投稿日時: 2006-10-30 10:38
Instrumentation は全然関係なかったー orz

http://enterpriselibrary.jp/
も、チェックはしているのですが…
まだ全部をみたわけではなく、必要そうなとこだけをみています。
私、必要な情報が書いてあっても、それがわかってないのかもしれませんね(汗

下の投稿で、Database Sinkなのかなー とか投稿してますが。
2.0ではその辺どうなったのか、まだわかっていません。
教えていただいたサイトを含め、もう一度調べてみます。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-10-30 21:52
引用:

ユーレックさんの書き込み(2006-10-29 20:08)より:
記事は読んでいます。

ユーレックさんの書き込み(2006-10-30 10:38)より:
も、チェックはしているのですが…


こういうことを防ぐために、「という推測で色々調べてみたのですが…」ではなく、どこを調べた(どの様なキーワードで検索したか)を、具体的に書いて欲しいのです。。。
(お互い、さみしいでしょ?)


 市川さんは日本でただ一人の Enterprise Library の表彰を受けている人でかつ、MVP でもあるので、ブログの方にコメントしたり、Message Boards を利用しましょう。って、スパム攻撃受けてるしorz

_________________
ユーレック
常連さん
会議室デビュー日: 2005/07/05
投稿数: 26
投稿日時: 2006-10-31 10:12
レスありがとうございます。

ごめんなさい。
最初から、どうしようかとは思ったのですが…
自信を持ってこのページは見た、と言えるほど情報を拾い出せていない気がして
つい、どこをどう調べたのか、という部分を省いてしまいました。
すみません、以下既に挙げて頂いたサイトも含め記述します。

Enterprise Library Index - @IT
http://www.atmarkit.co.jp/fdotnet/entlib/index/index.html
patterns & practices Enterprise Library
http://enterpriselibrary.jp/
なにぱんの.NET で C# な日記
http://d.hatena.ne.jp/panda728z/searchdiary?word=%2a%5bEntLib2%2e0%5d
CodeZine:Application Blockと連携するProviderの実装と構成ツールへの登録
http://codezine.jp/a/article.aspx?aid=198
なかよし研究所 : Enterprise LibraryのDAABで実験君
http://tech-ezo.jp/blogs/nakayoshi/archive/2005/05/18/224.aspx
GotDotNet Japan 掲示板 アーカイブ
http://www.microsoft.com/japan/msdn/community/gdn/ShowForumGroup.aspx
Visual Studio User Group > フォーラム > .NET 開発 > Visual Basic
http://vsug.jp/tabid/63/view/topics/forumid/44/Default.aspx
Enterprise Library: Message Boards
http://enterpriselibrary.jp/community/modules/newbb/

後はここの会議室。
主に見ているところはこのくらいだと思いますが…
以前調べた時のメモや、Googleでの検索で上記のページにたどり着きました
検索はWeb全体で
[Enterprise Library][EntLib][Database Sink][Database Trace Listener][App.config]
等を単体、又は組み合わせたり
他に[設定][インストール][とは?]等の言葉を付けたし検索して情報を探しています。
又、最初はしていなかったんですが、今は英語表記でそれらしい情報の書かれたページはページ翻訳かけて、原文と見比べながら情報を探しています。

情報をきちんとまとめて、ブログやメッセージボードも利用するようにしたいと思います。
最初からもっとまとめられてれば良かったんですが、
ようは「Database Trace ListenerってDBへログを書き出せるの?」「どう使うの?」
って事ですよね(汗 本当、最初からもっとまとめて書いていれば…)

引き続き、何か情報ありましたらよろしくお願いします。
何か情報が入り次第、こちらにも書き込みするようにします。

[ メッセージ編集済み 編集者: ユーレック 編集日時 2006-10-31 10:22 ]
ただURLだけのせて、どこのページだか分かり難かったので修正 orz
[ メッセージ編集済み 編集者: ユーレック 編集日時 2006-10-31 10:30 ]
考えた末、下記のメッセージボードを利用することにしました。
http://enterpriselibrary.jp/community/

[ メッセージ編集済み 編集者: ユーレック 編集日時 2006-11-02 11:04 ]
1

スキルアップ/キャリアアップ(JOB@IT)