正在寻找解决此问题的方法:我需要将来自多台计算机上运行的应用程序的日志条目发送到&聚合在远程服务器上。要求:
我正在考虑使用log4j和JMSAppender。假设这是一个合适的解决方案,有没有可用的例子?在这种情况下,集中式服务器上将运行哪个进程来接收日志条目?
感谢。
答案 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>
您可以使用其他框架,JMS服务器和技术,但我认为这是一种非常简单的方法,可以以非常低的成本和高稳定性实现。