Надежный (долговечный) механизм распределенного ведения журнала

Попытка найти коммерческую структуру ведения журналов для распределенных систем. Эта структура должна позволять приложениям .NET на удаленном сервере регистрировать сообщения, которые затем могут собираться в центральном расположении. Если возможно, центральное расположение должно хранить сообщения в базе данных SQL Server.

Требования:

  1. Иметь возможность инициировать регистрацию сообщений на удаленном сервере, даже если сбои в сети препятствуют немедленной отправке сообщения в центральное расположение.
  2. Отправка сообщений в центральное расположение должна осуществляться процессом, отличным от того, в котором выполняется приложение .NET, чтобы предотвратить любое снижение производительности приложений или веб-служб ASP.NET.
  3. Гарантированная возможная доставка сообщений в центральный пункт. например В случае перезагрузки удаленного сервера в конце периода, когда сеть не отвечает, зарегистрированные сообщения должны по-прежнему доставляться, когда удаленный сервер и нормальные условия сети восстанавливаются.

person Andrew Gibson    schedule 05.12.2009    source источник


Ответы (3)


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

Использование другого решения, такого как написание конкретного адаптера log4net, безусловно, является вариантом, но оно может привести к проблемам связи/зависимостей, поэтому принятие должно учитывать фактическую среду развертывания.

person user162912    schedule 05.12.2009

Я думаю, вы должны быть в состоянии сделать это, используя Microsoft Enterprise Library и MSMQ из коробки. Блок приложения Entlib Logging имеет встроенный прослушиватель MSMQ. Хотя мы использовали ведение журналов Entlib в нескольких проектах, я лично не пользовался службой распространения MSMQ.

http://msdn.microsoft.com/en-us/library/dd203267.aspx

person Kim Major    schedule 05.12.2009

Выберите log4net. Он безопасен для потоков.

person Graviton    schedule 05.12.2009
comment
Он потокобезопасен, но, если я не ошибаюсь, он не предлагает встроенной распределенной надежной обработки зарегистрированных сообщений. - person Andrew Gibson; 05.12.2009