views:

300

answers:

2

We have a single SQL Log for storing errors from multiple applications. We have disabled the elmah.axd page for each one of our applications and would like to have a new application that specifically displays errors from all of the apps that report errors to the common SQL log.

As of now, even though the application for all errors is using the common SQL log, it only displays errors from the current application. Has anyone done this before? What within the elmah code might need to be tweaked?

+4  A: 

I assume by "SQL Log" you mean MSSQL Server... If so, probably the easiest way of accomplishing what you want would be to edit the stored procedures created in the SQL Server database that holds your errors.

To get the error list, the ELMAH dll calls the ELMAH_GetErrorsXML proc with the application name as a parameter, then the proc filters the return with a WHERE [Application] = @Application clause.

Just remove the WHERE clause from the ELMAH_GetErrorsXML proc, and all errors should be returned regardless of application.

To get a single error record properly, you'll have to do the same with the ELMAH_GetErrorXML proc, as it also filters by application.

This, of course, will affect any application retrieving errors out of this particular database, but I assume in your case you'll only ever have the one, so this should be good.

CAVEAT: I have not tried this, so I can't guarantee the results...

Eric King
Correct! I'll look at the sproc modifications.
RSolberg
+1  A: 

Yes, it easily works. However you can't see app name in Elmah/Default.aspx. I haven't found if it is confugurable - just display one column more.

That's true. The layout for that page is defined in the ErrorLogPage.cs code, so to add another column you would have to download the source, make the changes, and recompile. http://code.google.com/p/elmah/source/browse/trunk/src/Elmah/ErrorLogPage.cs
Eric King