手动 Elmah 日志记录

发布于 2024-11-19 17:52:55 字数 578 浏览 2 评论 0原文

如何仅在需要时使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

彼岸花ソ最美的依靠 2024-11-26 17:52:55

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

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

此方法会将错误添加到日志中,并且下面的过滤器将忽略所有其他方法:

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

毕竟我有一个问题 - < 内的名称标签/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:

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

This method will add error to log and filter below will ignore all others:

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

After all this I have one question - name tag inside <errorFilter> can only be test?

一刻暧昧 2024-11-26 17:52:55

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

You can configure it in Web.Config file. Check this wiki

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文