当前位置: 首页 > 知识库问答 >
问题:

集中式Java日志记录

西门淮晨
2023-03-14

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

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

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

我还发现了一篇关于如何实现这种日志服务器的精彩文章。由于这篇文章是在2001年写的,我想可能有人已经解决了这个特殊的问题。但我的搜索结果一无所获。

我的问题:是否有一个日志框架,通过支持团队可以访问的中央服务器来处理网络上的日志?

规范:

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

没有必要,但很高兴拥有

  • 身份验证和安全当然是一个问题,但可能会推迟至少一段时间(如果它是开放软件,我们会将其扩展到我们的需求OT:我们总是回馈给项目)
  • 数据挖掘和分析是非常有助于使软件更好的东西,但也可以是一个外部应用程序

我认为最糟糕的情况是他们没有这样的软件。在这种情况下,我们可能会自己实现它。但是如果有这样的客户机-服务器应用程序,我会非常感激不需要做这种特别有问题的工作。

提前感谢

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

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

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

共有3个答案

石思淼
2023-03-14

看看logFaces,看起来符合您的规范。http://www.moonlit-software.com/

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

NXLOG或LogStash或Graylogs2

或者

LogStash ElasticSearch(可选Kibana)

例子:

1)http://log stash . net/docs/1 . 3 . 3/tutorials/getting-started-simple

2) http://logstash.net/docs/1.3.3/tutorials/getting-started-centralized

终睿
2023-03-14

您可以将Log4j与SocketAppender一起使用,因此您必须将服务器部分编写为日志事件处理。看见http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/net/SocketAppender.html

 类似资料:
  • 问题内容: 我在用 : 输出为: 我如何只打印不带日期和INFO的消息? 问题答案: 使用系统属性更改SimpleFormatter的格式: 或在logging.properties中: 所有这些属性都以format方法记录。

  • 我希望你们能够帮助我解决我目前面临的难题。我目前正在从事一个现有的web应用程序项目,其中一个要求是我们必须集中记录日志。该应用程序是一个分层应用程序,由客户端层(即视图)、服务层、业务层和DAO层组成。 目前,应用程序中的日志记录由控制器方法处理,其中每个控制器方法需要记录一些信息,通过调用日志记录函数手动记录数据。这些控制器方法处理的请求来自许多不同的客户端来源,包括移动设备(如电话)、网络浏

  • 我需要一些帮助在Azure中记录Java应用: 1) 使用Azure作为PaaS,我创建了一个配置为使用Java8 Tomcat8的API应用程序。我正试图使用log4j2将应用程序日志记录与Tomcat日志(在一个单独的文件中)分开。据我所知,我有权限在D:\home中的任何地方写入。因此,我将尝试写入“d:\home\Logfiles\Application\”。因此,我创建了一个带有log4

  • 我使用的是Flyway java API。 我想在我的日志中看到操作。 如何设置flyway日志?

  • 我在一个Spring Boot应用程序中有一个关于登录的配置问题。我希望我的看起来像默认的Spring Boot控制台附加器。如何从Spring Boot默认控制台附加器继承模式? 下面是我的配置

  • 我想更改我的嵌入式数据库的日志记录。每次我打开一个连接,atm都会记录“......创建新的JDBC驱动程序连接到......”。在我的测试套件中,我为每个请求打开一个新的连接,现在有很多这样的消息。 我没有找到任何类型的日志级别。我只是可以设置PrintWriter。但是我想看看错误msgs。我在Spring之外运行这个作为常规单元测试。 有什么想法吗?