gpt4 book ai didi

java - 我们应该将调试信息存储在应用程序的数据库中吗

转载 作者:行者123 更新时间:2023-11-30 11:52:37 24 4
gpt4 key购买 nike

我们有一些服务在 VIP 后面的“n”台主机上运行。当特定请求调用出现故障时,我们可能有兴趣通过查看发生故障的相关主机上的日志来了解原因。由于请求可以发送到任何主机,因此在跟踪日志时,我们需要知道故障源自哪个主机。

一种解决方案是将主机名与其​​他信息一起存储在我们服务的数据库中。另一种方法是,将日志推送到公共(public)存储并在那里进行跟踪。

我个人觉得,如果我们采用第一种方法,我们最终可能会在应用程序数据库中添加许多此类与调试相关的属性,从而污染它。然而,第二个选项也不是那么容易实现并且会产生一些开销。此外,故障发生在哪台主机上没有多大帮助,除非故障是由于某些硬件特定问题而发生的。

你们有什么建议?

最佳答案

在不了解您的基础架构的情况下,很难做到准确,但这里有一些一般观点。

我不喜欢使用数据库来存储应用程序日志 - 如果数据库崩溃,您将无法记录它!它也不是真正的关系数据,您无法获得可用于其他解决方案的监控工具。

我的建议是使用操作系统内置的事件记录解决方案;大多数日志记录框架开箱即用地支持这一点。在 Windows 上,这是事件日志;在 *nix 上有系统日志系统。日志记录应该快速、廉价且可靠 - 这就是您从操作系统工具中获得的。

第二个问题是如何使用这些日志进行故障排除和监控。有很多工具可以做到这一点,但主要针对系统管理员而不是开发人员。微软有 MoM,有 Tivoli 和 Big Brother——还有一大堆开源工具。我会使用它们,而不是构建您自己的解决方案。

关键点是 - 日志记录应该快速、便宜且健壮;分析和监控内容应该与您的应用程序逻辑完全分开,这样您就可以在多个项目中重用这些工具和流程。

关于java - 我们应该将调试信息存储在应用程序的数据库中吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6760660/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com