Могу ли я изменять исключения до того, как Elmah их зарегистрирует?

#elmah

#elmah

Вопрос:

Я использую Elmah в приложении WebForms и хотел бы иметь возможность изменять исключение до того, как Elmah его зарегистрирует. В моем сценарии некоторые из моих компонентов зависимостей генерируют исключения, которые имеют много пользовательских InnerExceptions с деталями, которые Elmah игнорирует. Итак, я хотел бы получить возможность повторить InnerExceptions и добавить текстовые сведения к основному исключению непосредственно перед тем, как Elmah его зарегистрирует.

Я могу видеть, как я бы полностью фильтровал исключения, но не похоже, что я мог бы изменить исключение и при этом разрешить его регистрацию. Есть идеи?

Ответ №1:

Не могли бы вы обработать свои исключения вместо того, чтобы оставлять их необработанными, чтобы ELMAH получал их автоматически, и создать пользовательское исключение с некоторым свойством, которое ELMAH считывает переопределенным, чтобы отобразить то, что вы хотите из ваших пользовательских свойств исключения? например, сообщение

 ErrorSignal.FromCurrentContext().Raise(...)
  

Ответ №2:

Мы решили эту проблему, разветвляя Elmah локально и добавляя код для повторения исключений в соответствии с предложениями в этом выпуске Elmah:

http://code.google.com/p/elmah/issues/detail?id=162amp;can=1amp;q=data

Создание нашей собственной версии также позволило нам добавить пару других функций, которые текущая версия Elmah не предоставляет «из коробки».


Кстати, следующая версия Elmah находится в разработке — похоже, по крайней мере в некоторых кодовых базах будут внесены существенные изменения — поэтому мне нужно будет вернуться к этой проблеме и другим нашим дополнительным требованиям к ведению журнала, как только она выйдет.