ELMAH 定制提供程序和公开事件

4
我想知道如何创建自定义提供程序来存储错误日志,例如一个提供程序提供给Windows事件查看器。
如果到目前为止还不可能,我也想知道是否有任何公开的事件可以重写,以便我可以注入我的代码,获取异常,并进行任何我想要的操作。
我知道在Global.asax中有一些可以重写的事件,例如用于过滤的事件:
void ErrorLog_Filtering(object sender, ExceptionFilterEventArgs e)
{
}
void ErrorMail_Filtering(object sender, ExceptionFilterEventArgs )
{
}

有更多的吗?我在哪里能找到这些事件的列表?
1个回答

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> 

关于这些事件,它们是由Elmah模块发出的。在ErrorLogModule中有两个事件- Logged和Filtering。在ErrorMailModule中有四个事件 - Filtering、Mailing、Mailed和DisposingMail。


那基本上回答了我的问题,太好了! - Zhongmin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接