Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
集中式Java日志记录_Java_Logging_Log4j_Distributed Computing_Logback - Fatal编程技术网

集中式Java日志记录

集中式Java日志记录,java,logging,log4j,distributed-computing,logback,Java,Logging,Log4j,Distributed Computing,Logback,我正在寻找一种方法来集中分布式软件(用Java编写)的日志关注点,这将非常容易,因为所讨论的系统只有一台服务器。但请记住,将来很可能会有更多特定服务器的实例运行(并且需要更多的应用程序),必须有类似于日志服务器的东西,它负责处理传入的日志,并使支持团队能够访问这些日志 目前的情况是,一些java应用程序使用log4j将其数据写入本地文件,因此如果客户机出现过期问题,支持团队必须要求提供日志,这并不总是那么容易,而且需要花费大量时间。在服务器故障的情况下,诊断问题并没有那么大,因为无论如何都有远程

我正在寻找一种方法来集中分布式软件(用Java编写)的日志关注点,这将非常容易,因为所讨论的系统只有一台服务器。但请记住,将来很可能会有更多特定服务器的实例运行(并且需要更多的应用程序),必须有类似于日志服务器的东西,它负责处理传入的日志,并使支持团队能够访问这些日志

目前的情况是,一些java应用程序使用log4j将其数据写入本地文件,因此如果客户机出现过期问题,支持团队必须要求提供日志,这并不总是那么容易,而且需要花费大量时间。在服务器故障的情况下,诊断问题并没有那么大,因为无论如何都有远程访问,但即使如此,通过日志服务器监控一切仍然是有意义的

当我浏览有关“集中式日志记录”的问题时,我发现了另一个问题(实际上是唯一一个有(在本例中)可用答案的问题)。问题是,所有应用程序都在一个封闭的环境中运行(在一个网络中)安全指南不允许任何与内部软件有关的内容从网络环境中传出

我还发现了一篇关于如何创建这样一个日志服务器的精彩文章。由于这篇文章是在2001年写的,我本以为有人已经解决了这个问题。但我的搜索结果却一无所获

我的问题:是否有一个日志框架,可以通过支持团队可以访问的集中式服务器通过网络处理用户的日志记录

规格:

  • 可用性
  • 服务器必须由我们运行
  • Java 1.5兼容性
  • 与异构网络的兼容性
  • 最佳情况:协议使用HTTP发送日志(以避免防火墙问题)
  • 最佳情况:使用log4j或LogBack或基本上实现slf4j的任何东西
没有必要,但很高兴有

  • 身份验证和安全性当然是一个问题,但可能会被推迟至少一段时间(如果它是开放软件,我们会将其扩展到我们的需要OT:我们总是回馈项目)
  • 数据挖掘和分析是非常有助于改进软件的东西,但也可以是一个外部应用程序
我最糟糕的情况是,他们没有这样的软件。在这种情况下,我们可能会自己实现。但如果有这样一个客户机-服务器应用程序,我将非常感激不需要做这种特别有问题的工作

提前谢谢

更新:该解决方案必须在多个支持java的平台上运行。(主要是Windows、Linux和一些HP Unix)

更新:经过更多的研究,我们实际上找到了一个能够获得的解决方案。(至少从2015年年中开始离线)为分布式软件提供日志服务,并且与log4j和logback兼容(与slf4j兼容)。它让我们能够分析应用程序中的每个用户。因此,复制报告的错误(甚至是未报告的错误)非常容易。它还通过电子邮件通知我们重要事件,并有一个报告系统,将相同来源的日志汇总成易于访问的格式。它们已部署(这是完美的)就在几天前,它还在这里,运行得很好


更新(2016):这个问题仍然有很多流量,但我提到的站点已经不存在了。

您可以将Log4j与SocketAppender一起使用,因此您必须将服务器部分编写为LogEvent processing。
请参见

查看日志面,看起来符合您的规范。

  • 可用性(检查)
  • 服务器必须由我们运行。(检查)
  • Java 1.5兼容性(检查)
  • 与异构网络的兼容性。(检查)
  • 最佳情况:协议使用HTTP发送日志(以避免防火墙问题)(几乎是TCP/UDP)
  • 最佳情况:使用log4j或LogBack或基本上实现slf4j的任何东西(检查)
  • 身份验证(检查)
  • 数据挖掘和分析(可通过扩展api实现)

Facebook上有一个现成的解决方案-,它在幕后使用Apache Hadoop。然而,我所知道的大多数公司仍然倾向于为此开发内部系统。大约两年前,我在一家这样的公司工作,并在那里处理日志。我们也使用Hadoop。在我们的案例中,我们有以下设置:

  • 我们有一个用于日志聚合的小型专用计算机集群
  • 工人们从生产服务中挖掘日志,然后解析各个行
  • 然后,还原者将聚合必要的数据并准备报告
我们感兴趣的报告数量很少,而且数量固定。在少数情况下,当我们想要执行不同类型的分析时,我们只需为其添加一个专门的reducer代码,并可以选择对旧日志运行它

如果您不能事先决定您感兴趣的分析类型,那么最好将workers准备的结构化数据存储在HBase或其他NoSQL数据库()中。这样您就不需要重新聚合原始日志中的数据,而可以查询数据存储

有许多关于此类日志聚合解决方案的好文章,例如,。允许您使用类似SQL的查询查询基于Hadoop的大型数据集

NXLOGLogStashGraylogs2

LogStash+ElasticSearch(+可选Kibana)

例如:

(一)


2)

您没有提及正在运行的操作系统,也没有提及是否需要跨平台,但如果您使用*nix,可能需要查看syslog appender。如果我没记错的话,