分布式日志记录:JMS和log4j?

时间:2012-06-12 21:08:57

标签: log4j jms

正在寻找解决此问题的方法:我需要将来自多台计算机上运行的应用程序的日志条目发送到&聚合在远程服务器上。要求:

  1. 登录应用程序需要异步(不能等待日志条目遍历网络)
  2. 登录应用程序需要排队;如果网络出现故障,则需要在本地对日志条目进行排队并发送给 当网络再次可用时,集中式服务器
  3. 我正在考虑使用log4j和JMSAppender。假设这是一个合适的解决方案,有没有可用的例子?在这种情况下,集中式服务器上将运行哪个进程来接收日志条目?

    感谢。

1 个答案:

答案 0 :(得分:1)

我开始考虑的一个简单设置是使用Apache ActiveMQ

它是一个开源消息代理(JMS兼容),能够在多个物理机器之间集群,而ActiveMQ安装相当轻量级。您可以在每台应用程序计算机上安装一个ActiveMQ。然后在日志记录服务器(图片中的物理服务器C)上,您将拥有另一个ActiveMQ。您的应用程序将使用JMS appender(read more here),您实际上只需使用包含的apache camel从队列中读取并在文件或数据库上写入日志,而无需为该任务编写应用程序。

可以像在activemq / conf安装中向camel.xml添加以下内容一样简单,并在activemq.xml配置中导入camel.xml。

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

Distributed Logging Example

您可以使用其他框架,JMS服务器和技术,但我认为这是一种非常简单的方法,可以以非常低的成本和高稳定性实现。

相关问题