26

複数のアプリケーションからのエラーを保存するための単一のSQLログがあります。各アプリケーションのelmah.axdページを無効にし、エラーを共通のSQLログに報告するすべてのアプリからのエラーを具体的に表示する新しいアプリケーションが必要です。

現在のところ、すべてのエラーのアプリケーションは共通のSQLログを使用していますが、現在のアプリケーションからのエラーのみが表示されます。誰かがこれを以前にやったことがありますか?elmahコード内で微調整が必​​要なものは何ですか?

4

3 に答える 3

33

「SQLログ」とはMSSQLServerを意味すると思います...もしそうなら、おそらくあなたが望むことを達成する最も簡単な方法は、エラーを保持するSQLServerデータベースに作成されたストアドプロシージャを編集することでしょう。

エラーリストを取得するために、ELMAH dllはELMAH_GetErrorsXML、アプリケーション名をパラメーターとしてprocを呼び出し、procはWHERE [Application] = @Application句を使用して戻り値をフィルター処理します。

プロシージャからWHERE句を削除するだけELMAH_GetErrorsXMLで、アプリケーションに関係なくすべてのエラーが返されます。

単一のエラーレコードを適切に取得するには、ELMAH_GetErrorXMLprocでも同じことを行う必要があります。これは、アプリケーションによってもフィルタリングされるためです。

もちろん、これはこの特定のデータベースからエラーを取得するアプリケーションに影響しますが、あなたの場合は1つしかないと思いますので、これは良いことです。

警告:私はこれを試したことがないので、結果を保証することはできません...

于 2009-09-09T15:25:57.603 に答える
4

デフォルトのElmahハンドラーファクトリをオーバーライドして、アプリケーションによってElmahログをフィルター処理することは問題ありません。MySqlでそれを行う方法を示すサンプルアプリを作成しました:http://diagnettoolkit.codeplex.com/releases/view/103931。それがどのように機能するかを説明している私のブログの投稿をチェックするのもよいでしょう。

于 2013-03-24T16:30:50.390 に答える
2

はい、簡単に動作します。ただし、Elmah/Default.aspxにアプリ名を表示することはできません。わかりやすいかどうかはわかりません。もう1列だけ表示してください。

于 2009-12-07T15:14:44.660 に答える