对不起,如果这听起来像是一个基本问题,但我是网络开发的新手。
我们在多台服务器之间进行负载均衡。应用程序配置为使用log4j进行日志记录。它们每个都写入各自服务器上的日志文件。这意味着研究问题意味着从所有这些服务器获取日志,这是繁琐的,并且意味着通过Ops控制负载平衡,并引入延迟。
这是网络应用程序日志记录的标准吗?或者是否有简单的解决方案来在一个地方整合日志记录?什么是使开发人员可以轻松获取日志的标准做法?
答案 0 :(得分:3)
使用JDBC appender(或alternative version)而非文件记录到SQL。
答案 1 :(得分:2)
您可以执行各种日志记录,并且可以自动进行日志记录。
有些类型是:
如果操作不愿意直接访问,请查看是否可以对可以访问的位置执行这些文件的例程转储。
答案 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 共享的驱动器。您可以为每个服务器使用单独的目录进行一些操作,但在要评估日志的服务器上可以看到这两个目录。