Error Logging in ASP.NET MVC with ELMAH

Error logging in ASP.NET MVC is extremely easy with ELMAH (Error Logging Modules and Handlers). I suggest you get it from NuGet:

Once you have it installed, it can instantly start recording errors, even Yellow Screens of Deaths. Here’s a list of errors from Elmah:

So what happens, is after you set it up via NuGet, you can get started viewing issues (if there are any) via elmah.axd. So in my case:

http://localhost:56598/elmah.axd

Now, if you’re using Chrome, and you view this page, Chrome will try to request for favicon.ico, which is not delivered from this web page. So, you have to write a filter in your web.config to ignore the .ico file:

     .
     .
     .
  <elmah>    
    <errorFilter>
      <test>
        <regex binding="Context.Request.ServerVariables['URL']" pattern="/favicon\.ico(\z|\?)" />     
      </test>
    </errorFilter>    
  </elmah>
 
</configuration>

Or if you want to completely ignore 404 errors:

     .
     .
     .
  <elmah>    
    <errorFilter>
      <test>
        <equal binding="HttpStatusCode" value="404" type="Int32" />     
      </test>
    </errorFilter>    
  </elmah>
</configuration>

By default, ELMAH stores error details in memory, so every time the app pool gets restarted, it gets flushed. To dump the data to SQL Server instead, update your web.config:

  <elmah>
    <errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="ElmahConnectionString"/>
  </elmah>
</configuration>

The Elmah connection string is pretty straightforward:

<connectionStrings>
  <add name="ElmahConnectionString " connectionString="Initial Catalog=my_database;data source=.\SQLEXPRESS;Integrated Security=SSPI;" providerName="System.Data.SqlClient" />
</connectionStrings>

Then you go to the Elmah project page and run the SQL Server script via SSMS – MAKE SURE YOU RUN ‘USE ‘ first!

http://code.google.com/p/elmah/downloads/list

It then creates a table:

Leave a Reply