Ручная регистрация Elmah - PullRequest
2 голосов
/ 12 июля 2011

как я могу использовать регистратор Elmah только тогда, когда я хочу? У меня есть ErrorsController, и мне нужно регистрировать его только тогда, когда исключение неизвестно:

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

Я не реализовал атрибуты Elmah, Elmah добавлен только в web.config. Как я могу это сделать? У меня есть идея использовать errorFilter, который будет фильтровать все входящие ошибки, но я думаю, что это не очень хорошо.

UPD

У меня есть фильтр добавления, который игнорирует все ошибки:

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

но он игнорирует абсолютно все, даже то, что я вызываю, чтобы войти вручную.

Ответы [ 2 ]

3 голосов
/ 13 июля 2011

Я понимаю, почему фильтр игнорирует ошибку - потому что при использовании 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?

0 голосов
/ 12 июля 2011

Вы можете настроить его в файле Web.Config.Проверьте эту вики

...