Вступление
Если ошибка возникает на веб-сайте или в системе, конечно, полезно зарегистрировать ее и показать пользователю вежливое сообщение со ссылочным кодом для ошибки.
И если у вас много систем, вы не хотите, чтобы эта информация была разбросана по сторонам - хорошо, если бы для нее было единственное централизованное место.
На самом простом уровне все, что нужно, это увеличивающийся идентификатор и сериализованный дамп подробностей ошибок. (И, возможно, «централизованное место» - почтовый ящик.)
На другом конце спектра, возможно, находится полностью нормализованная база данных, которая также позволяет вам нажимать кнопку и видеть график ошибок в день или определять, какой тип ошибки наиболее распространен в системе X, имеет ли сервер A больше базы данных. ошибки соединения, чем сервер B, и так далее.
Здесь я имею в виду регистрацию ошибок / исключений на уровне кода удаленной системой, а не отслеживание проблем «на основе человека», например, с помощью Jira, Trac и т. Д.
Вопросов
Я ищу мысли от разработчиков, которые использовали этот тип системы, особенно в отношении:
- Какие важные функции вы не можете обойтись без?
- Что хорошего в том, чтобы иметь функции, которые действительно экономят ваше время?
- Какие функции могут показаться хорошей идеей, но разве они не так полезны?
Например, я бы сказал, что функция «show duplicates», которая идентифицирует многократное возникновение ошибки (не беспокоясь о «неважных» деталях, которые могут отличаться), очень важна.
Кнопка «создать проблему в [Jira / etc] для этой ошибки» звучит как хорошая экономия времени.
Просто повторюсь, что я хочу узнать о практическом опыте людей, которые использовали такие системы, желательно, чтобы они подкреплялись тем, почему функция удивительна / ужасна.
(Если вы все равно собираетесь теоретизировать, по крайней мере отметьте свой ответ как таковой.)
источник
Ответы:
Я был в проекте, где с зарегистрированными ошибками клиента с помощью библиотеки Microsoft Enterprise . Все исключения, где отправить на наш почтовый ящик. В тему письма мы добавили хеш-код сериализованной ошибки, чтобы избежать дублирования сообщений. Конечно, можно хранить сериализованные сообщения в базе данных и так далее.
Я рекомендую вам проверить библиотеку Microsoft Enterprise и Log4Net .
Некоторые особенности Log4Net
источник
В случае приложений базы данных - какой-то идентификатор (например,
<TABLE>:<PrimaryKeyID>
), который позволяет отслеживать записи в базе данных, относящиеся к области, в которой было отловлено исключение.Я сделал это с Oracle и PL / SQL, записав идентификатор в таблицу базы данных в приложении, из обработчика исключений.
источник
Как отметил Амир Резаи, многое из того, что вы описываете (т. Е. Специфические части журналирования), реализовано в корпоративной библиотеке. Все остальное похоже на аналитическую часть (то есть, что делать с журналами потом).
В моем случае я создал несколько небольших приложений и сценариев sql, которые облегчили некоторые задачи. Вот некоторые из вещей, которые мне действительно понравились:
источник
Иногда информация журнала слишком объемна для хранения на диске. Один из подходов, которые я видел, состоит в том, чтобы записать ваши записи в журнал в firehose (скажем, в perl) примерно так:
тогда аналитик может выяснить, что он / она хочет посмотреть.
источник
Вот что я узнал из мониторинга ошибок в наших приложениях:
У меня были отличные результаты для log4net, потому что это действительно облегчает вход в несколько мест и внесение изменений в конфигурацию регистрации.
источник
elmah - это система регистрации ошибок с открытым исходным кодом для приложений ASP.NET, которую можно быстро и легко добавить в существующую систему (используя NuGet http://nuget.codeplex.com/ ). Он поддерживает различные бэкэнды и функции уведомлений.
Я не знаю никого, кто бы добавил его в настольное приложение, поскольку оно работает как веб-сайт, но ничто не мешает вам запускать его в качестве службы и публиковать в нем свои исключения через Интернет.
http://code.google.com/p/elmah/
источник