Я использую elmah. Это имеет некоторые действительно хорошие функции и здесь статья CodeProject о нем. Я думаю, что команда StackOverflow использует elmah также!
Я использовал Log4net , настроенный для отправки по электронной почте подробностей о фатальных ошибках. Он также настроен на запись всего в файл журнала, что неоценимо при попытке отладки проблем. Другое преимущество состоит в том, что, если эта стандартная функциональность не выполняет то, что вам нужно, довольно легко написать пользовательский аппендер, который может обрабатывать информацию журналирования по мере необходимости.
Сказав это, я использую это в тандеме с пользовательским обработчиком ошибок, который отправляет html-сообщение электронной почты с чуть большей информацией, чем включено в стандартную электронную почту log4net - страницу, переменные сеанса, файлы cookie, переменные http-сервера, и т.д.
Они оба связаны в событии Application_OnError, где исключение регистрируется как неустранимое исключение в log4net (которое затем вызывает его по электронной почте на указанный адрес электронной почты), а также обрабатываются с помощью пользовательского обработчика ошибок.
Впервые услышал о Эльме из записи в блоге Coding Horror, Ответственно за сбои , и, хотя это выглядит многообещающе, я пока не реализую его в любых проектах.
Я использовал объекты Входа Библиотеки Предприятия. Это позволяет Вам иметь различные типы входа (плоский файл, электронная почта и/или база данных). Это довольно настраиваемо и имеет довольно хороший интерфейс для обновления Вашего web.config для конфигурации входа. Обычно я называю свой вход от На Ошибке в Global.asax.
Я использую log4net, и где бы я ни ожидал исключение, я регистрирую его на соответствующем уровне. Я склонен не перебрасывать исключение, потому что оно на самом деле не учитывает приятный пользовательский опыт, в текущем состоянии вы можете предоставить меньше информации.
У меня будет Application_Error, также настроенный для перехвата любого исключения, которое не ожидалось, и ошибка регистрируется как фатальный приоритет через log4net (ну, 404 обнаруживаются и регистрируются как информация, поскольку они не так серьезны).
Мое использование команды log4net от Apache. Это довольно легко и легко установить. Лучший из всех, это абсолютно настраивается из web.config файла, поэтому как только у Вас есть рычаги в Вашей установке кода, можно полностью измениться, способ регистрироваться сделан только путем изменения web.config файла.
поддержки log4net, регистрирующиеся к большому разнообразию местоположений - база данных, электронная почта, текстовый файл, журнал событий Windows, и т.д. Моей команде настроили его, чтобы отправить подробную информацию об ошибке в базу данных, и также послать электронное письмо всей команде с достаточной информацией для нас для определения в который часть кода порожденная ошибка. Тогда мы знаем, кто ответственен за ту часть кода, и они могут перейти к базе данных для получения более подробной информации.
Я недавно создал веб-сервис asp.net с NLog, который я использую для всех своих настольных приложений. Вход хорошо работает, когда я отлаживаю в Visual Studio, но как только я переключаюсь на IIS, файл журнала не создается; я еще не определил, почему, но оно то, что я должен искать решение, заставляет меня хотеть попробовать что-то еще за свои потребности asp.net!
Мы используем пользовательский вход собственной разработки 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. Нам настраивали предупреждения по электронной почте на уровне DB для поиска определенных ошибок или часто происходящих ошибок. Это помогает нам определить точно, куда ошибки прибывают из.
Это не могло бы быть точно, что Вы ищете. Другой подход, подобный использованию Global.asax, является нам методом инжекции кода как AOP с PostSharp. Это позволяет Вам вводить пользовательский код вначале и конец каждого метода или на каждом исключении. Это - интересный подход, но я полагаю, что это может иметь тяжелую производительность наверху.