26

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

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

4

3 回答 3

33

我假设“SQL 日志”是指 MSSQL Server ......如果是这样,完成你想要的最简单的方法可能是编辑在 SQL Server 数据库中创建的包含错误的存储过程。

为了获取错误列表,ELMAH dllELMAH_GetErrorsXML以应用程序名称作为参数调用 proc,然后 proc 使用WHERE [Application] = @Application子句过滤返回。

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

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

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

CAVEAT:我没有试过这个,所以我不能保证结果......

于 2009-09-09T15:25:57.603 回答
4

覆盖默认的 Elmah 处理程序工厂不是问题,这样它将按应用程序过滤 Elmah 日志。我编写了一个示例应用程序,展示了如何使用 MySql:http ://diagnettoolkit.codeplex.com/releases/view/103931 。你也可以查看我博客上的一篇文章,我解释了它是如何工作的。

于 2013-03-24T16:30:50.390 回答
2

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

于 2009-12-07T15:14:44.660 回答