База данных журнала ошибок — Для многих приложений
-
18-09-2019 - |
Вопрос
У меня есть куча существующих клиент-серверных приложений, которые в настоящее время пыхтят.Время от времени клиент захочет добавить какой-нибудь тип веб-интерфейса для доступа к части своих данных.Они, как правило, являются пользовательскими, хотя некоторые из них являются "общими".;но у каждого есть свой собственный "экземпляр" в своей собственной виртуальной машине.
Что мне нужно, так это централизованная область для сбора и регистрации любых ошибок, возникающих на любой из этих виртуальных машин.
Я занимаюсь созданием новой базы данных и настройкой службы WCF, чтобы позволить каждому из этих веб-приложений создавать записи журнала в моей централизованной базе данных, а также в локальном журнале событий.
Это плохой дизайн?
Обновить
Веб-приложения находятся на 2003 / IIS6 и 2008 / IIS7 версиях, встроенных в ASP.NET.Многие экземпляры находятся на паре веб-серверов, но многие будут развернуты на отдельных виртуальных машинах.
Решение
Это именно то, как мы это реализовали.
У нас есть 3 таблицы в базе данных:
Event Types
------------
EventType int
EventDescription varchar(50)
MonitoredSystems
---------------
SystemID int
SystemName varchar(50)
SystemDescription text
Events
-------
RecordID bigint
EventTime datetime
SystemID int FK
EventText text
EventType int FK
Acknowledged bit
Мы также создали сайт, где мы могли бы просматривать события.Поле "Подтвержденные" позволяет нам настроить просмотр "Неподтвержденных критических проблем", чтобы мы могли быстро видеть любые новые проблемы и подтверждать их по мере чтения.
Мы знаем, что есть другие инструменты, которые могут сделать это за нас, но ни один из них не был так прост в интеграции, как наша собственная домашняя версия, и теперь мы используем его в каждом создаваемом нами приложении.У нас есть некоторые другие настройки, о которых я здесь не упоминаю, которые другие инструменты не предоставляли "из коробки".
Так что я думаю, что ваша идея прекрасна.Если вы создадите его самостоятельно, вы можете настроить его так, чтобы он работал так, как вы хотите.Тем не менее, я бы рекомендовал, по крайней мере, изучить такие инструменты, как Log4net и т.д.
Другие советы
Вам следует взглянуть на ELMAH (модули регистрации ошибок и обработчики) (http://code.google.com/p/elmah/) с комбинацией репортера исключений Orbit One (http://aspexceptionreporter.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=35343), которые в сочетании могут предоставить вам возможность централизованно сообщать об ошибках по всему предприятию.
Если вы часто входите в систему (debug /info / warning), убедитесь, что ваши RPC-вызовы выполняются асинхронно.
Я бы порекомендовал более гибкую структуру данных;
Events
-------
RecordID bigint
EventTime datetime
EventLevel text
SystemID text
EventText text
EventType text
Acknowledged bit
EventProperties
-------
RecordID bigint
key text
value text
eventProperties позволяет приложению ведения журнала регистрировать любую информацию, которая может оказаться полезной, без необходимости определять такие свойства заранее.Обратите внимание, что для SystemID нет ограничений, что позволяет добавлять системы без настройки.