我正在寻找一种方法来集中分布式软件(用 Java 编写)的日志记录问题,这将非常容易,因为所讨论的系统只有一个服务器。但请记住,将来很可能会运行更多特定服务器的实例(并且需要更多应用程序),必须有类似 Logging-Server 的东西,它处理传入的日志并使支持团队可以访问它们。
现在的情况是,几个 java 应用程序使用 log4j 将其数据写入本地文件,因此如果客户遇到问题,支持团队必须要求提供日志,这并不总是那么容易并且需要很多时间. 在服务器故障的情况下,诊断问题没有那么大,因为无论如何都有远程访问,但是即使通过 Logging-Server 监控所有内容仍然很有意义。
当我处理有关“集中日志记录”的问题时,我发现了另一个问题(实际上是唯一一个(在这种情况下)可用答案的问题。问题是,所有应用程序都在封闭环境中(在一个网络内)和安全指南中运行不允许任何与内部软件有关的东西离开环境网络。
我还发现了一篇关于如何实现这样的 Logging-Server 的精彩文章。由于这篇文章是在 2001 年写的,我会认为有人可能已经解决了这个特定的问题。但是我的搜索结果一无所获。
我的问题:是否有一个日志框架可以通过支持团队访问的中央服务器处理网络日志?
规格:
- 可用性
- 服务器必须由我们运行。
- Java 1.5 兼容性
- 与异构网络的兼容性。
- 最佳情况:协议使用 HTTP 发送日志(以避免防火墙问题)
- 最佳情况:使用 log4j 或 LogBack 或基本上任何实现 slf4j
没有必要,但很高兴拥有
- 身份验证和安全性当然是一个问题,但至少可以推迟一段时间(如果它是开放软件,我们会将其扩展到我们的需求OT:我们总是回馈项目)。
- 数据挖掘和分析对于改进软件非常有帮助,但也可以是外部应用程序。
我最坏的情况是他们不是那样的软件。对于这种情况,我们可能会自己实现。但是如果有这样一个客户端-服务器应用程序,我将非常感谢不需要做这个特别有问题的工作。
提前致谢
更新:该解决方案必须在多个支持 java 的平台上运行。(主要是 Windows、Linux、一些 HP Unix)
更新:经过大量研究,我们实际上找到了我们能够获得的解决方案。clusterlog.net(至少从 2015 年中开始离线)为分布式软件提供日志服务,并兼容 log4j 和 logback(兼容 slf4j)。它让我们可以通过应用程序分析每个用户。因此,很容易重现报告的错误(甚至是未报告的错误)。它还通过电子邮件通知我们重要事件,并有一个报告系统,将相同来源的日志汇总为易于访问的格式。几天前,他们在这里部署了(完美无瑕),并且运行良好。
更新(2016 年):这个问题仍然有很多流量,但我提到的网站已经不存在了。