【问题标题】:How to stop ELMAH form logging the same exception on refresh?如何在刷新时停止 ELMAH 表单记录相同的异常?
【发布时间】:2015-07-22 13:09:45
【问题描述】:

我将 ELMAH 用于我的 Asp.net MVC 项目异常日志记录,我已经对其进行了设置,以便将异常记录到数据库中,但我的问题是如果发生异常并且用户出于任何原因刷新页面(也许在想通过刷新页面,页面可能变得可用)在每次刷新时,一条记录被插入到数据库中,我担心它可能会导致它非常大的表(我已经限制 ELMAH 只保留最后 90 天,但是它仍然可能变得太大),我想知道是否有办法限制在某个时间范围内来自同一页面的记录异常的数量。

【问题讨论】:

    标签: elmah elmah.mvc


    【解决方案1】:

    最终我最终做的是查询数据库,如果最后一个异常的TimeUtc 是在不到 5 分钟前形成的,并且它的消息与当前发生的异常相同,我已经关闭了日志,这是我所做的演练:

    1. 首先安装This package,添加ELMAH_Errors 表和实体以使用EF 查询ELMAH_Errors
    2. 您可以使用实体框架来操作ELMAH_Errors

    Global.asax 中添加此代码:

    void ErrorLog_Filtering(object sender, ExceptionFilterEventArgs e)
        {
            using (var context = new ElmahContext())
            {
                var lastErr = context.ELMAH_Errors.OrderByDescending(m => m.TimeUtc).Take(1).SingleOrDefault();
    
                if (lastErr != null &&
                    (e.Exception.Message == lastErr.Message && lastErr.TimeUtc > DateTime.UtcNow.AddMinutes(-5)))
                {
                    e.Dismiss();
                }
            }
    

    您也可以为ErrorMail_Filtering 添加此代码,这里也是another approach,但这样做的方式是,无论错误是什么以及它源自何处,它都会保存特定的 ELMAH 表单日志记录时间段,我的方法不是最好的,但它仍然比每次刷新都记录。

    【讨论】:

      猜你喜欢
      • 2011-06-04
      • 1970-01-01
      • 2014-03-26
      • 2019-03-02
      • 1970-01-01
      • 2017-03-02
      • 2015-11-11
      • 2011-08-12
      • 2015-05-04
      相关资源
      最近更新 更多