Я ищу лучшее решение, чем то, что мы в настоящее время имеем дело с неожиданными производственными ошибками , не изобретая колесо.
Большим количеством наших продуктов являются приложения WinForm и WPF, которые устанавливаются на удаленных сайтах. Неизбежно возникают непредвиденные ошибки, от NullReferenceExceptions до «Общих сетевых ошибок». Таким образом, начиная от ошибок программиста до проблем среды.
В настоящее время все эти необработанные исключения регистрируются с использованием log4net и затем отправляются нам по электронной почте для анализа . Однако мы обнаружили, что иногда эти «отчеты» об ошибках содержат слишком мало информации для выявления проблемы.
В этих отчетах нам нужна такая информация, как:
- Имя приложения
- Версия приложения
- Рабочая станция
- Может быть, снимок экрана
- Сведения об исключении
- Операционная система
- доступная оперативная память
- Запуск процессов
- И так далее ...
Я действительно не хочу изобретать велосипед, разрабатывая его с нуля. Необходимые компоненты:
- Сбор ошибок (подробности, как указано выше)
- Ошибка «отправитель» (требуется очередь, если БД или Интернет недоступны)
- Ошибка базы данных
- Анализ и сообщение об этих ошибках. Например. 10 наиболее частых ошибок или тайм-аутов происходят между 16:00 и 17:00. Как ошибки сравниваются между версией х и у?
Примечание:
Мы рассматривали SmartAssembly как возможное решение, но, хотя оно и близко, оно не вполне отвечало нашим потребностям, и я надеялся услышать, что делают другие разработчики и существуют ли альтернативы.
Редактировать: Спасибо за ответы до сих пор. Может быть, я не совсем понял в своем первоначальном вопросе, проблема не в том, как перехватить все незапланированные исключения, а в том, как с ними справиться и создать механизм отчетности (анализа) вокруг них.