Question

I ran ELMAH sql scripts in test DB(It created ELmah_Error table and 3 stored procedures) and configured ELMAH in MVC application using Nuget.

I modified web.config as specified and I'm able to log exceptions into

 http://mysite/elmah.axd

But, instead i want to log the exceptions into Sql Server.

I added below class to achieve that

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

Final step was to:

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

Is it the correct way to use ELMAH to log all exceptions or AM I missing something?

Was it helpful?

Solution

Once you have the database setup, all you need to do is add the following to the <elmah> section your web.config to setup the Elmah to log to the SQL Database:

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

Replace <DBConnString> and <YourApp> with appropriate values for your configuration.

Once you have done this you will not need to use your custom ElmahHandleErrorAttribute class.

I am not sure which NuGet package you installed, but I would recommend using the Elmah.MVC package as it integrates Elmah into MVC exceptionally well by setting up all of the ErrorHandlers and ErrorFilters for you.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top