7

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

指定どおりに web.config を変更し、例外をログに記録できるようになりました

 http://mysite/elmah.axd

しかし、代わりに、例外を Sql Server に記録したいと考えています。

それを達成するためにクラスの下に追加しました

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
    } 
}

最後のステップは次のとおりです。

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

ELMAH を使用してすべての例外をログに記録するのは正しい方法ですか、それとも何か不足していますか?

4

1 に答える 1

11

データベースのセットアップが完了したら、web.config セクションに以下を追加し<elmah>て、SQL データベースにログを記録するように Elmah をセットアップするだけです。

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

<DBConnString><YourApp>を構成に適した値に置き換えます。

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

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

于 2013-05-01T12:33:01.013 に答える