2012-06-12 2 views
0

Кто-то искал решение этой проблемы: мне нужны записи журналов из приложений, запущенных на нескольких машинах, для отправки на &, агрегированных на удаленном сервере. Требования:распределенная регистрация: JMS и log4j?

  1. лесозаготовки в приложении должно быть асинхронными (не может ждать, пока записи журнала, чтобы пересечь сеть)
  2. регистрации в приложении должно быть поставлено в очередь; если сеть не удается, записи журнала должны быть поставлены в очередь на местном уровне и отправляется централизованный сервер, когда сеть снова становится доступным

Я смотрю на использование log4j и JMSAppender. Предполагая, что это подходящее решение, есть ли примеры? Какой процесс будет выполняться на централизованном сервере для получения записей журнала в этом сценарии?

Спасибо.

ответ

1

Один простой настройки я пришел к мысли о том, чтобы использовать Apache ActiveMQ

Он является открытым исходным кодом обмена сообщениями брокер (JMS-совместимый), который способен к кластеру очереди из нескольких физических машин и установка ActiveMQ является довольно легким. Вы просто устанавливаете один ActiveMQ на каждой из ваших прикладных машин. Затем на сервере регистрации (Physical Server C на картинке) у вас будет еще один ActiveMQ. Ваше приложение будет использовать JMS-приложение (read more here), и вы могли бы просто использовать включенный apache camel для чтения из очереди и записи файла журнала или базы данных без необходимости писать приложение для этой задачи.

Это может быть так же просто, как добавить в camel.xml что-то похожее на установку activemq/conf и импортировать camel.xml в конфигурацию activemq.xml.

<route> 
<from uri="activemq:queue:LogQueue"/> 
<to uri="file:target/folder/?fileName=logfile.log&fileExist=Append"/> 
</route> 

Distributed Logging Example

Вы можете использовать myrriad других структур, серверов и технологий JMS, но я думаю, что это довольно простой подход к достижению с очень низкой стоимостью и высокой стабильностью.

Смежные вопросы