2012-03-25 4 views
1

私はテストフェーズのためにクライアントにプロジェクトを処理するつもりですが、プロジェクトはASP.NET MVC3でビルドされます。必要なのは、すべての例外が永続的な場所-SQLデータベース -C#例外を処理するときにデータベースに保存するフィールド

と私はいくつかの質問を持っている..私は、データベースに保存すべきかフィールド

  1. ? (メッセージ、トレースなど)
  2. 私は内部の例外を保存するのを見ましたが、時には例外にnullの内部例外があります。
  3. エラーを処理してDBに保存するのに最適な場所は何ですか?私は、データベースに保存すべきかフィールド

答えて

4

(Global.asaxのまたはWeb.configでカスタムエラーページを定義し、server.getLastErrorとの最後のエラーが出ますか)? (メッセージ、トレース、など)

あなたができることはすべて、可能な場合:私は、人々が救う見てきました

  • タイプ
  • メッセージ
  • スタックトレース

内部例外が発生しますが、時には例外としてnullの内部例外があります。

いくつかは複数のネストされています。できるだけすべてを保存してください。あなたの構造はあなた次第ですが、あなたはいつも最も内側のものを追加し、内側のものへの外部キーを含む包含するものを外に向かって追加することができます。

エラーを処理してDBに保存するのに最適な場所は何ですか?

私は恐れることはありません。これを非同期的に行うことも考えられますが、キューに入れておくこともできます。データベースの問題が復元されると、エラーは、その後はが格納されるように、キュー(最大サイズはもちろん)を構築できれば、例外はそれ自身がデータベースエラーである可能性がある場合に特に関係します。有用かもしれない。または、まずそれらをディスクにダンプし、そのログを定期的にデータベースにアップロードしてください。

1
  1. Jon Skeet氏によると、より多くのフィールドを保存するほど、より多くのデータを保存することで、問題を診断する必要があります。個人的には、例外をシリアライズして、それを行う能力があれば(XML空間とパフォーマンスの考慮事項)、「XML」型の列に置くことにします。これにより、内部例外もシリアル化されるため、第2の問題が解消されます。このアプローチでは、すべてのカスタム例外が正しく直列化できるはずです。
  2. 基本的な考え方を得るには、Elmahのようなエラーロガーの自由に利用できるソースコードを調べることをおすすめします。
関連する問題