手动 Elmah 日志记录
如何仅在需要时使用 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>
但它绝对忽略了所有内容,即使我调用手动记录也是如此。
how I can use Elmah logger only when I want?
I have ErrorsController and I need log it only when excpetion is unknown:
Elmah.ErrorSignal.FromCurrentContext().Raise(new Exception(string.Format("{0}, {1}", controller, action), exception));
I didn't implement ElmahAttributes, Elmah added only in web.config.
How I can do that? I have idea to use some errorFilter that will filter all incoming errors, but it's not very good, I think.
UPD
I have add filter that ignores all errors:
<errorFilter>
<ignoreAll>
<regex binding="Context.Request.Url" pattern="." />
</ignoreAll>
</errorFilter>
but it ignores absolutely everything, even that I call to log manually.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我理解为什么过滤器会忽略错误 - 因为当使用
Elmah.ErrorSignal.FromCurrentContext().Raise()
时,我们正在“模拟”获取错误的过程,并且该错误属于过滤器。我们应该使用 Elmah 记录器方法来将错误添加到日志中,而不是这种方法:
此方法会将错误添加到日志中,并且下面的过滤器将忽略所有其他方法:
毕竟我有一个问题 -< 内的名称标签/code> 只能是
test
吗?I understand why filter ignores error - because when using
Elmah.ErrorSignal.FromCurrentContext().Raise()
we are "emulate" process of getting error and this errors fall under the filter.Instead of this method we should use Elmah logger method to add error to log:
This method will add error to log and filter below will ignore all others:
After all this I have one question - name tag inside
<errorFilter>
can only betest
?您可以在
Web.Config
文件中对其进行配置。查看此 wikiYou can configure it in
Web.Config
file. Check this wiki