elmah定制提供商和暴露事件

时间:2011-03-19 15:48:17

标签: c# elmah

我想知道如何创建用于存储错误日志的自定义提供程序,例如。 Windows事件查看器的提供者。

如果到目前为止还不可能,我也想知道是否有任何我可以覆盖的暴露事件,以便我可以注入我的代码,获取异常,做我想做的任何事情。

我知道我可以在Global.asax中覆盖一些事件。喜欢过滤:

void ErrorLog_Filtering(object sender, ExceptionFilterEventArgs e)
{
}
void ErrorMail_Filtering(object sender, ExceptionFilterEventArgs )
{
}

还有更多吗?我在哪里可以找到这些事件的清单?

1 个答案:

答案 0 :(得分:6)

关于创建Elmah事件日志提供程序,如果您打算将错误信息存储在事件日志中并使用ELMAH UI,则可能不太好。 related question有一个关于这个主题的Matthew Daugherty的优秀答案:

  

ELMAH错误日志类不是   只写;他们还阅读了日志   数据,以便它可以显示   ELMAH网络界面。另外,   ELMAH记录的不仅仅是异常   信息。它还记录服务器   变量,表单集合和   重现所需的信息   死亡的黄色屏幕。即使   你要记录所有这些   信息到事件日志   难以理解为纯文本,   并且很难再读回来   这样一种ELMAH网络   界面可以使用它。如果你不是   将使用ELMAH Web界面   那显然不是问题。

为了创建自定义日志记录提供程序,您可以继承ErrorLog并覆盖GetError(通过id获取单个错误;由Elmah UI使用),GetErrors(列出页面上的所有错误;由Elmah UI使用)和记录(记录新错误)方法以提供您自己的存储机制。有关如何实现自定义ErrorLog的检查,请参阅this article

然后在配置中注册新的ErrorLog提供程序:

<elmah> 
  <errorLog type="MyNamespace.MyErrorLog, MyAssemblyName"/> 
</elmah> 

关于事件,它们由Elmah模块发出。在ErrorLogModule中有两个事件 - 记录和过滤。在ErrorMailModule中有四个事件 - Filtering,Mailing,Mailed和DisposingMail。