2013-05-01 15 views
7

テストDB(ELmah_Errorテーブルと3つのストアドプロシージャを作成しました)でELMAH sqlスクリプトを実行し、Nugetを使用してMVCアプリケーションでELMAHを構成しました。SQL Server 2008 R2を使用しているASP.NET MVC 4のELMAH

代わりに私は、SQL Serverに例外を記録したい、指定されたように私は、web.configファイルを変更し、私は

http://mysite/elmah.axd 

に例外をログに記録することができるよ。しかし。

は私が

public class ElmahHandleErrorAttribute : System.Web.Mvc.HandleErrorAttribute 
{ 
    public override void OnException(System.Web.Mvc.ExceptionContext context) 
    { 
     LogException(e); 
    } 
    private static void LogException(Exception e) 
    { 
     // Call to Database and insert the exception info 
    } 
} 

最後のステップがあったことを達成するために、クラスの下に追加する:それはすべての例外をログに記録するか、私が何かをしないのですELMAHを使用する正しい方法

public static void RegisterGlobalFilters(GlobalFilterCollection filters) 
{ 
    filters.Add(new ElmahHandleErrorAttribute()); 
} 

ですか?

答えて

11

データベースのセットアップを持っていたら、あなたがする必要があるすべては、SQLデータベースにログを記録するように設定する<elmah>セクションweb.configファイルELMAHに以下を追加します:

<elmah> 
     <errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="<DBConnString>" 
      applicationName="<YourApp>" 
    </elmah> 

<DBConnString><YourApp>を交換してください適切な値を設定します。

これを実行したら、カスタムElmahHandleErrorAttributeクラスを使用する必要はありません。

どのNuGetパッケージをインストールしたか分かりませんが、すべてのErrorHandlerとErrorFiltersを設定することで、ElmahをMVCに非常によく統合するので、Elmah.MVCパッケージを使用することをお勧めします。

+1

既存のelmah設定はどうですか?エルマは必要なテーブルを作成しますか? – Rahatur

+7

elamhは既存のテーブルを自動的に作成しません。ただし、データベースセクションのhttps://code.google.com/p/elmah/wiki/Downloadsからデータベースの種類とバージョンのスクリプトをダウンロードできます。 –

+0

私はconnectionStringName = ""という値になるのは、接続文字列自体ではなく、接続文字列名(web.config セクションで定義されている)だと思います。 – Bern

関連する問題