База данных журнала ошибок — Для многих приложений

StackOverflow https://stackoverflow.com/questions/2001358

Вопрос

У меня есть куча существующих клиент-серверных приложений, которые в настоящее время пыхтят.Время от времени клиент захочет добавить какой-нибудь тип веб-интерфейса для доступа к части своих данных.Они, как правило, являются пользовательскими, хотя некоторые из них являются "общими".;но у каждого есть свой собственный "экземпляр" в своей собственной виртуальной машине.

Что мне нужно, так это централизованная область для сбора и регистрации любых ошибок, возникающих на любой из этих виртуальных машин.

Я занимаюсь созданием новой базы данных и настройкой службы 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 нет ограничений, что позволяет добавлять системы без настройки.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top