elmah定制提供商和暴露事件

Zho*_*min 4 c# elmah

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

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

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

void ErrorLog_Filtering(object sender, ExceptionFilterEventArgs e)
{
}
void ErrorMail_Filtering(object sender, ExceptionFilterEventArgs )
{
}
Run Code Online (Sandbox Code Playgroud)

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

PHe*_*erg 6

关于创建Elmah事件日志提供程序,如果您打算将错误信息存储在事件日志中并使用ELMAH UI,则可能不是一个好主意.Matthew Daugherty就此主题提出了一个相关问题:

ELMAH错误日志类不是只写的; 他们还会读取日志数据,以便可以在ELMAH Web界面中显示.此外,ELMAH记录的不仅仅是异常信息.它还记录服务器变量,表单集合以及重现黄色死亡屏幕所需的信息.即使您将所有这些信息记录到事件日志中,也很难以纯文本形式阅读,并且很难以ELMAH Web界面可以使用它的方式进行回读.如果您不打算使用ELMAH Web界面,那么显然不是问题.

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

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

<elmah> 
  <errorLog type="MyNamespace.MyErrorLog, MyAssemblyName"/> 
</elmah> 
Run Code Online (Sandbox Code Playgroud)

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