Как регистрировать исключения в режиме релиза - PullRequest
3 голосов
/ 04 июня 2009

Трассировка стека не включена, когда сборка .net развернута в режиме выпуска. Поэтому мы не можем получить трассировку стека из исключения и записать его в производственную среду.

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

Обратите внимание, что механизм регистрации также используется для определения ошибок. Поэтому, когда возникает исключение NullReferenceException или IndexOutOfBoundsException, бесполезно получать только тип исключения и сообщение, нам часто нужно знать, где именно произошло исключение.

Как вы справляетесь с этим? Какую информацию вы регистрируете в своем производственном коде, когда возникает исключение, и как вы определяете, в чем проблема по этой информации?

Ответы [ 3 ]

2 голосов
/ 04 июня 2009

Посмотрите на ELMAH, я не реализовал это сам, но, кажется, это привлекает внимание.

http://www.hanselman.com/blog/ELMAHErrorLoggingModulesAndHandlersForASPNETAndMVCToo.aspx

Как только ELMAH будет добавлен в работающее веб-приложение и настроен соответствующим образом, вы получите следующие возможности, не меняя ни одной строки своего кода:

  • Регистрация почти всех необработанных исключений.
  • Веб-страница для удаленного просмотра всего журнала перекодированных исключений.
  • Веб-страница для удаленного просмотра полной информации о любом зарегистрированном исключении.
  • Во многих случаях вы можете просмотреть исходный желтый экран смерти, созданный ASP.NET для данного исключения, даже с отключенным режимом customErrors.
  • Уведомление по электронной почте о каждой ошибке в момент ее возникновения.
  • RSS-лента последних 15 ошибок из журнала.
  • Несколько реализаций вспомогательного хранилища для журнала, в том числе в оперативной памяти, Microsoft SQL Server и некоторых других, предоставленных сообществом.
1 голос
/ 04 июня 2009

У нас нет проблем с регистрацией стековых трасс для кода выпуска, однако мы всегда поставляем файлы .pdb с нашими выпусками. Без pdb вы всегда будете ограничены информацией о символах, содержащейся в самой сборке, которая для сборок в режиме выпуска не будет большой.

0 голосов
/ 04 июня 2009

Весь наш код выпуска имеет следы стека. Единственное, что нам не хватает - это номера строк, которые взяты из .pdb. Вы используете обфускатор?

...