如何仅在需要时使用 Elmah 记录器? 我有 ErrorsController,只有当异常未知时才需要记录它:
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>
但它绝对忽略了所有内容,甚至是我调用手动记录的内容。
最佳答案
我明白为什么过滤器会忽略错误 - 因为当使用 Elmah.ErrorSignal.FromCurrentContext().Raise()
时我们正在“模拟”出现错误的过程,并且该错误属于过滤器。
我们应该使用 Elmah 记录器方法来将错误添加到日志中,而不是使用此方法:
Elmah.ErrorLog.GetDefault(System.Web.HttpContext.Current).Log()
此方法会将错误添加到日志中,并且下面的过滤器将忽略所有其他内容:
<errorFilter>
<test>
<regex binding="Context.Request.Url" pattern="." />
</test>
</errorFilter>
毕竟我有一个问题 - 里面的名字标签 <errorFilter>
只能是test
?
关于asp.net-mvc - 手动 Elmah 日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6662517/