1

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

4

1 回答 1

2

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

  1. 首先安装这个包,添加表和实体以使用 EFELMAH_Errors查询表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,这里也是另一种方法,但它这样做的方式是,无论错误是什么以及它源自何处,它都会在特定时间段内保存 ELMAH 表单日志记录,我的方法不是最好的,但它仍然击败了每次刷新的记录。

于 2015-07-22T17:47:59.600 回答