【问题标题】:elmah customized provider and exposed eventelmah 定制提供者和暴露事件
【发布时间】:2011-03-19 15:48:17
【问题描述】:

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

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

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

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

还有更多吗?在哪里可以找到这些活动的列表?

【问题讨论】:

    标签: c# elmah


    【解决方案1】:

    关于创建 Elmah 事件日志提供程序,如果您打算将错误信息存储在事件日志中并同时使用 ELMAH UI,这可能不是一个好主意。 related question Matthew Daugherty 就这个话题给出了很好的回答:

    ELMAH 错误日志类不是 只写;他们还阅读了日志 数据,以便它可以显示在 ELMAH 网络界面。此外, ELMAH 记录的不仅仅是异常 信息。它还记录服务器 变量、表单集合和 复制所需的信息 黄色的死亡屏幕。即使 你要记录所有这些 事件日志中的信息 难以作为纯文本阅读, 并且很难读回 这样的方式,ELMAH 网络 接口可以使用它。如果你不是 将使用 ELMAH 网络界面 那么显然这不是问题。

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

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

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

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

    【讨论】:

    • 这几乎回答了我的问题,太好了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-06
    • 1970-01-01
    • 1970-01-01
    • 2018-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多