从负载平衡的服务器记录

时间:2009-12-16 18:38:17

标签: logging log4j

对不起,如果这听起来像是一个基本问题,但我是网络开发的新手。

我们在多台服务器之间进行负载均衡。应用程序配置为使用log4j进行日志记录。它们每个都写入各自服务器上的日志文件。这意味着研究问题意味着从所有这些服务器获取日志,这是繁琐的,并且意味着通过Ops控制负载平衡,并引入延迟。

这是网络应用程序日志记录的标准吗?或者是否有简单的解决方案来在一个地方整合日志记录?什么是使开发人员可以轻松获取日志的标准做法?

5 个答案:

答案 0 :(得分:3)

使用JDBC appender(或alternative version)而非文件记录到SQL。

答案 1 :(得分:2)

您可以执行各种日志记录,并且可以自动进行日志记录。

有些类型是:

  • 登录内置机器日志,(事件日志或类似情况。) 对于这些,获取访问权限,以便您可以远程访问它们,并根据需要进行整理/检查。
  • 通过通常记录到本地计算机上的文本文件的应用程序进行记录。 (IIS或其他。)
    获取授予文件夹的访问权限,以便您自己分析这些文件夹。
  • 自定义日志记录 我建议记录到数据库。 (虽然这些需要经常修剪/总结。)
    如果记录到数据库失败,则会记录到计算机日志 注意:这可能会对性能产生影响,因此请注意您要执行的日志记录。

如果操作不愿意直接访问,请查看是否可以对可以访问的位置执行这些文件的例程转储。

答案 2 :(得分:2)

Log4J有一个JMS appender(所以你可以把日志发送到一个消息队列 - 不像听起来那么愚蠢,取决于你需要做多少/什么样的处理!)和{{3} } appender(本地或远程)。这些中的任何一个都可以帮助您在单个位置收集日志。 Syslog appender可能是你最好的选择,只是为了在一个地方收集东西,因为Unix-ish系统已经做了很长时间的系统日志,并且有很多稳定的功能,你可以利用它们。

根据您的流量,记录到数据库可能很难扩展,除非您对批量插入很聪明。我建议你把这些东西保存在平面文件中(当然是合并的),这样你就可以灵活地将它们一次性导入到数据库中,或者尝试像syslog这样的东西(很多基于解析的例子)日志文件) - 如果您有足够的数量来证明这种复杂性。

答案 3 :(得分:2)

我们有一个具有强大日志记录的Web场,以及它是如何实现的。

每个Web应用程序都会生成日志记录事件消息使用MSMQ,这些消息将发送到托管在单独计算机上的专用队列。该机器有一个应用程序,它使消息出列并将它们写入Sqlite数据库。

使用MSMQ将Web应用程序与日志记录服务器分离。如果服务器处于脱机状态,则消息将位于Web服务器上,直到重新建立连接。 MSMQ处理将消息移动到目标服务器。通过这种方式,网站可以继续不间断地完成任务。

日志记录服务器有自己的Web界面来查询日志记录数据库,并且还可以从其他应用程序接收日志消息。

我们为每条消息分配一个分类。对于具有致命错误分类的邮件,日志记录服务器会自动向支持团队生成电子邮件。其他非致命消息和跟踪消息仅记录到数据库中以进行汇总报告。

答案 4 :(得分:1)

使日志更容易访问的一个可能选项是将它们写入通过 NFS 共享的驱动器。您可以为每个服务器使用单独的目录进行一些操作,但在要评估日志的服务器上可以看到这两个目录。