我想知道如何创建用于存储错误日志的自定义提供程序,例如Windows事件查看器的提供程序。
如果到目前为止还不可能,我还想知道是否有任何公开的事件可以重写,以便我可以注入我的代码,获取异常,做任何我想做的事情。
我知道在global.asax中有一些事件可以覆盖。类似于过滤:
void ErrorLog_Filtering(object sender, ExceptionFilterEventArgs e)
{
}
void ErrorMail_Filtering(object sender, ExceptionFilterEventArgs )
{
}
还有吗?在哪里可以找到这些事件的列表?
最佳答案
关于创建elmah事件日志提供程序,如果要在事件日志中存储错误信息并同时使用elmah ui,这可能不是一个好主意。arelated question马修·道尔蒂在这个问题上给出了一个很好的答案:
Elmah错误日志类不是
只写;他们也读日志
数据以便在
Elmah Web界面。另外,
Elmah记录的不仅仅是异常
信息。它还记录服务器
变量、窗体集合和
复制所需的信息
死亡的黄屏。即使
你要把这些都记录下来
事件日志的信息
很难作为纯文本阅读,
很难读回
这样的方式使得艾玛网
接口可以使用它。如果你不是
将使用elmah web界面
显然这不是问题。
为了创建自定义日志提供程序,可以将error log子类化并重写geterror(按id获取单个错误;由elmah ui使用)、geterrors(列出页面上的所有错误;由elmah ui使用)和log(记录新错误)方法,以提供自己的存储机制。有关如何实现自定义错误日志的示例,请参见this article。
然后在配置中注册新的错误日志提供程序:
<elmah>
<errorLog type="MyNamespace.MyErrorLog, MyAssemblyName"/>
</elmah>
关于事件,它们是由elmah模块发出的。在errorlogmodule中有两个事件-记录和筛选。在errorMailmodule中有四个事件-过滤、邮寄、邮寄和处理邮件。