手动Elmah日志记录

时间:2011-07-12 10:08:43

标签: asp.net-mvc elmah

我怎么才能在我想要的时候使用Elmah记录器? 我有ErrorsController,只有当excpetion未知时才需要记录它:

Elmah.ErrorSignal.FromCurrentContext().Raise(new Exception(string.Format("{0}, {1}", controller, action), exception));

我没有实现ElmahAttributes,Elmah仅在web.config中添加。 我怎么能这样做?我有想法使用一些会过滤掉所有传入错误的errorFilter,但我觉得这不是很好。

UPD

我添加了忽略所有错误的过滤器:

<errorFilter>
  <ignoreAll>
      <regex binding="Context.Request.Url" pattern="." />
  </ignoreAll>
</errorFilter>

但它完全忽略了所有内容,即使我手动记录也是如此。

2 个答案:

答案 0 :(得分:3)

我理解为什么过滤器会忽略错误 - 因为在使用Elmah.ErrorSignal.FromCurrentContext().Raise()时我们会“模拟”获取错误的过程,而这些错误属于过滤器。 我们应该使用Elmah logger方法将错误添加到日志中来代替这种方法:

Elmah.ErrorLog.GetDefault(System.Web.HttpContext.Current).Log()

此方法会向日志添加错误,下面的过滤器会忽略所有其他内容:

<errorFilter>
  <test>
    <regex binding="Context.Request.Url" pattern="." />
  </test>
</errorFilter>

毕竟我有一个问题 - <errorFilter>中的名称标签只能是test

答案 1 :(得分:0)

您可以在Web.Config文件中对其进行配置。查看this wiki