With some changes to the Elmah source code, you can use all your sites in one database. Then you can configure one wizard that displays all exceptions with the application that selected it.
Eric King shows how on this blog http://blog.devadept.com/2010/02/using-elmah-with-multiple-applications.html
Summarizing:
Create two additional stored procedures in a database named ELMAH_GetErrorsXML_Master and ELMAH_GetErrorXML_Master without an application name parameter.
Then create the SQLMasterErrorLog class based on the existing SQLErrorLog.cs class. In this case, edit the GetErrorXml () and GetErrorsXML () methods to call the new stored procedures.
public static SqlCommand GetErrorXml(string appName, Guid id) { SqlCommand command = new SqlCommand("ELMAH_GetErrorXml_Master"); command.CommandType = CommandType.StoredProcedure; SqlParameterCollection parameters = command.Parameters; parameters.Add("@ErrorId", SqlDbType.UniqueIdentifier).Value = id; return command; } public static SqlCommand GetErrorsXml(string appName, int pageIndex, int pageSize) { SqlCommand command = new SqlCommand("ELMAH_GetErrorsXml_Master"); command.CommandType = CommandType.StoredProcedure; SqlParameterCollection parameters = command.Parameters; parameters.Add("@PageIndex", SqlDbType.Int).Value = pageIndex; parameters.Add("@PageSize", SqlDbType.Int).Value = pageSize; parameters.Add("@TotalCount", SqlDbType.Int).Direction = ParameterDirection.Output; return command; }
Modify the RendorErrors () method in the ErrorLogPage class to display an additional column in the log view table for the application name.
Add the following to the table heading
headRow.Cells.Add(FormatCell(new TableHeaderCell(), "Host", "host-col")); headRow.Cells.Add(FormatCell(new TableHeaderCell(), "App", "app-col"));
And the next in the for loop creates childrows
bodyRow.Cells.Add(FormatCell(new TableCell(), error.HostName, "host-col")); bodyRow.Cells.Add(FormatCell(new TableCell(), error.ApplicationName, "app-col"));
Now you only need one empty website with elmah setup. Instead of the usual SqlErrorLog use
<errorLog type="Elmah.SqlMasterErrorLog, Elmah" connectionStringName="elmah"/>