我们有一个SQL Log来存储来自多个应用程序的错误。我们已经为每个应用程序禁用了elmah.axd页面,并希望有一个新的应用程序,专门显示报告错误的所有应用程序中的错误到公共SQL日志。
截至目前,即使所有错误的应用程序都使用通用SQL日志,它也只显示当前应用程序的错误。有没有人这样做过? elmah代码中可能需要调整哪些内容?
答案 0 :(得分:31)
我认为“SQL Log”你的意思是MSSQL Server ...如果是这样,可能最简单的方法就是编辑你在SQL Server数据库中创建的存储过程来保存你的错误。
要获取错误列表,ELMAH dll会以应用程序名称作为参数调用 ELMAH_GetErrorsXML
proc,然后proc会使用 {{1}过滤返回} 子句。
只需从WHERE [Application] = @Application
proc中删除WHERE子句,无论应用程序如何,都应返回所有错误。
要正确获取单个错误记录,您必须对 ELMAH_GetErrorsXML
proc执行相同操作,因为它还会按应用程序进行过滤。
这当然会影响从这个特定数据库中检索错误的任何应用程序,但我认为在你的情况下你只会有一个,所以这应该是好的。
CAVEAT:我没试过,所以我不能保证结果......
答案 1 :(得分:4)
覆盖默认的Elmah处理程序工厂不会有问题,因此它会按应用程序过滤Elmah日志。我编写了一个示例应用程序,演示如何使用MySql:http://diagnettoolkit.codeplex.com/releases/view/103931。您也可以查看post on my blog我在哪里解释它是如何工作的。
答案 2 :(得分:2)
是的,它很容易实现。但是,您无法在Elmah / Default.aspx中看到应用名称。我还没有发现它是否具有可疑性 - 只需再显示一列。