Сведения о вопросе

Junior

06:27, 17th August, 2020

Теги

Как вы регистрируете ошибки (исключения) в ваших приложениях ASP.NET?

Просмотров: 595   Ответов: 8

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

В моей компании мы привыкли иметь свой собственный ErrorMailer, ловя все в Global.asax Application_Error. Он был "Ok", но не очень гибким и настраиваемым.

Мы недавно переключились на NLog. Это гораздо более настраиваемо, мы можем определить различные цели для ошибок, фильтровать их, буферизировать их (еще не пробовали). Это очень хорошее улучшение.

Но недавно я обнаружил, что для этой цели в фреймворке .Net есть целое пространство имен : System.Web.Management , и его можно настроить в разделе healthMonitoring web.config.

Вы когда-нибудь работали с мониторингом здоровья .Net? Каково ваше решение для регистрации ошибок?



  Сведения об ответе

lourence

23:06, 23rd August, 2020

Я использую Эльма . Он имеет некоторые действительно хорошие функции, и вот CodeProject статья о нем. Я думаю, что команда StackOverflow также использует elmah!


  Сведения об ответе

davran

23:47, 22nd August, 2020

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

Сказав это, я использую это в тандеме с пользовательским обработчиком ошибок, который отправляет html email с немного большей информацией, чем входит в стандартную log4net электронную почту-страница, переменные сеанса, куки, переменные сервера http и т. д.

Они оба связаны в событии Application_OnError, где исключение регистрируется как фатальное исключение в log4net (которое затем вызывает его отправку по электронной почте на указанный адрес email), а также обрабатываются с помощью пользовательского обработчика ошибок.

Впервые услышал об Эльмах из записи в блоге Coding Horror, Crash ответственно, и хотя это выглядит многообещающе, я еще не реализовал в нем никаких проектов.


  Сведения об ответе

DAAA

22:17, 10th August, 2020

Я использую объекты ведения журнала корпоративной библиотеки. Это позволяет вам иметь различные типы ведения журнала (плоский файл, электронная почта и/или база данных). Это довольно настраиваемый и имеет довольно хороший интерфейс для обновления вашего web.config для конфигурации ведения журнала. Обычно я называю мою регистрацию на ошибки в Global.asax.

Вот ссылка на MSDN


  Сведения об ответе

crush

09:09, 25th August, 2020

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

Я также настрою Application_Error для перехвата любого исключения, которое не ожидалось, и ошибка регистрируется как фатальный приоритет через log4net (ну, 404-е обнаруживаются и регистрируются как информация, поскольку они не настолько серьезны).


  Сведения об ответе

SILA

21:06, 1st October, 2020

Мы используем пользовательский доморощенный журнал util, который мы написали. Он требует, чтобы вы реализовали ведение журнала самостоятельно везде, где вам это нужно. Но это также позволяет вам захватить гораздо больше, чем просто исключение.

Например наш код будет выглядеть так:

Try
  Dim p as New Person()
  p.Name = "Joe"
  p.Age = 30
Catch ex as Exception
  Log.LogException(ex,"Err creating person and assigning name/age")
  Throw ex
End Try

Таким образом, наш регистратор запишет всю необходимую нам информацию в базу данных SQL. У нас есть email оповещения, настроенные на уровне DB, чтобы искать определенные ошибки или часто встречающиеся ошибки. Это помогает нам точно определить, откуда берутся ошибки.

Это может быть не совсем то, что вы ищете. Другой подход, похожий на использование Global.asax, - это для нас техника инъекции кода, подобная AOP с PostSharp . Это позволяет вводить пользовательский код в начале и конце каждого метода или в каждом исключении. Это интересный подход, но я считаю, что он может иметь большие накладные расходы на производительность.


  Сведения об ответе

PHPH

02:34, 7th August, 2020

Моя команда использует log4net из Apache. Он довольно легкий и легко настраивается. Лучше всего, что он полностью настраивается из файла web.config, поэтому, как только у вас есть крючки в настройке кода, Вы можете полностью изменить способ ведения журнала, просто изменив файл web.config.

log4net поддерживает ведение журнала в самых разных местах - база данных, email, текстовый файл, Windows журнал событий и т.д. Моя команда настроила его для отправки подробной информации об ошибке в базу данных, а также для отправки email всей команде с достаточным количеством информации, чтобы мы могли определить, в какой части кода возникла ошибка. Тогда мы знаем, кто отвечает за этот фрагмент кода, и они могут обратиться к базе данных, чтобы получить более подробную информацию.


  Сведения об ответе

padenie

00:49, 3rd August, 2020

Недавно я построил веб-сервис asp.net с NLog, который я использую для всех своих настольных приложений. Ведение журнала прекрасно работает, когда я отлаживаю в Visual Studio, но как только я переключаюсь на IIS, файл журнала не создается; я еще не определил, почему, но тот факт, что мне нужно искать решение, заставляет меня попробовать что-то другое для моих asp.net потребностей!


  Сведения об ответе

#hash

18:37, 21st August, 2020

Мы используем EnterpriseLibrary.ExceptionHandling.Logging. Мне это нравится немного больше, чем log4net, потому что мы не только полностью контролируем ведение журнала, но и можем контролировать решение Throw/NoThrow в конфигурации.


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться