Exception handling 对具有单个DB日志的多个应用程序使用单个Elmah.axd

Exception handling 对具有单个DB日志的多个应用程序使用单个Elmah.axd,exception-handling,elmah,Exception Handling,Elmah,我们有一个SQL日志来存储来自多个应用程序的错误。我们已经为每个应用程序禁用了elmah.axd页面,希望有一个新的应用程序专门显示所有向公共SQL日志报告错误的应用程序中的错误 到目前为止,尽管针对所有错误的应用程序都在使用公共SQL日志,但它只显示来自当前应用程序的错误。以前有人这样做过吗?elmah代码中的哪些内容可能需要调整?我假设“SQL日志”是指MSSQL服务器。。。如果是这样的话,完成您想要的任务的最简单方法可能是编辑在SQL Server数据库中创建的存储过程,该存储过程保存您的

我们有一个SQL日志来存储来自多个应用程序的错误。我们已经为每个应用程序禁用了elmah.axd页面,希望有一个新的应用程序专门显示所有向公共SQL日志报告错误的应用程序中的错误

到目前为止,尽管针对所有错误的应用程序都在使用公共SQL日志,但它只显示来自当前应用程序的错误。以前有人这样做过吗?elmah代码中的哪些内容可能需要调整?

我假设“SQL日志”是指MSSQL服务器。。。如果是这样的话,完成您想要的任务的最简单方法可能是编辑在SQL Server数据库中创建的存储过程,该存储过程保存您的错误

要获取错误列表,ELMAH dll调用带有应用程序名称作为参数的
ELMAH\u GetErrorsXML
过程,然后该过程使用
WHERE[application]=@application
子句过滤返回

只需从
ELMAH_GetErrorsXML
proc中删除WHERE子句,所有错误都应返回,无论应用程序如何

要正确地获取单个错误记录,您必须对ELMAH_GetErrorXML过程执行相同的操作,因为它还按应用程序进行过滤

当然,这会影响从这个特定数据库中检索错误的任何应用程序,但我假设在您的情况下,您只会有一个错误,所以这应该是好的


警告:我没有尝试过这个,所以我不能保证结果…

是的,它很容易工作。但是,在Elmah/Default.aspx中看不到应用程序名称。我没有发现它是否可混淆-只需再显示一列。

覆盖默认的Elmah处理程序工厂,以便它按应用程序过滤Elmah日志,这不是一个问题。我编写了一个示例应用程序,展示了如何使用MySql进行此操作:。您也可以在我解释其工作原理的地方检查一下。

正确!我来看看存储过程的修改,没错。该页面的布局在ErrorLogPage.cs代码中定义,因此要添加另一列,您必须下载源代码,进行更改,然后重新编译+1-这就是应该如何做到的。简洁明了,无需修改原始DDL脚本或Elmah源代码。这篇博文解释了这一切。干得好,先生!这是一个不错的选择。但是,缺点是您一次只能看到一个应用程序中的错误,并且您必须事先知道应用程序的名称。如果你想看到所有应用程序中的错误列表(这就是我对问题的解释),这是不行的,除非我没有看到那一部分。谢谢你以清晰的方式问了这么好的问题,你已经把我的话带到时间机器上了。现在差不多是6-7年后了。