首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Server进行应用程序日志记录。专业人士/康斯?

使用Server进行应用程序日志记录。专业人士/康斯?
EN

Stack Overflow用户
提问于 2008-10-16 17:20:27
回答 11查看 10K关注 0票数 22

我有一个多用户应用程序,为活动保留一个集中的日志文件。现在,该日志记录正在进入文本文件,大约为每天10 of 50 of。文本文件是由记录器每天旋转,我们保持过去的4或5天的价值。我们对比这年龄更大的人没有兴趣。

它们很少被读取:无论是在为错误消息、诊断消息开发应用程序时,还是当应用程序正在生产时,都是为了对用户报告的问题或错误进行分类。

(严格来说,这是一个应用程序日志。)安全日志保存在其他地方。)

但是当他们被读的时候,他们是一个痛苦的屁股。即使使用Perl:字段(事务ID、用户ID等)也不好玩。在文件中是有用的,但只是文本。消息是按顺序写的,一次写一条,所以当试图跟踪特定的事务或用户时,交织的活动都是混在一起的。

我在找关于这个话题的想法。有人用SQL数据库进行应用程序级别的日志记录并喜欢它吗?讨厌吗?

EN

回答 11

Stack Overflow用户

发布于 2008-10-16 18:26:01

我认为直接登录数据库通常是个坏主意,我会避免这样做。

主要原因是:一个好的日志将是最有用的,当您可以使用它来调试您的应用程序死后,一旦错误已经发生,您不能再现它。要做到这一点,您需要确保日志本身是可靠的。要使任何系统可靠,一个好的开端就是保持简单。

因此,有一个简单的基于文件的日志,只有几行代码(打开文件,追加行,关闭文件或保持打开,重复.)将来当你真的需要它的时候,它通常会更可靠和有用。

另一方面,成功登录到SQL服务器将要求更多的组件正确工作,并且会有更多可能的错误情况,您将无法记录所需的信息,仅仅因为日志基础结构本身将无法工作。更糟糕的是:日志过程中的失败(如数据库损坏或死锁)可能会影响应用程序的性能,然后您将遇到一种情况,即辅助组件会阻止应用程序执行其主要功能。

如果您需要对日志进行大量分析,并且不习惯使用基于文本的工具(如grep ),那么将日志保存在文本文件中,并定期将它们导入SQL数据库。如果SQL失败,您将不会丢失任何日志信息,甚至不会影响应用程序的功能。然后,您可以在DB中进行所有数据分析。

我认为这是我不登录数据库的主要原因,尽管我过去就这样做过。希望能帮上忙。

票数 25
EN

Stack Overflow用户

发布于 2008-10-16 17:39:36

在我的上一份工作中,我们使用了一个日志数据库,这是很棒的。

我们有存储过程,这些存储过程将为我可以从网页加载的不同指标提供一般系统健康状况的概述。我们还可以在给定的时间内快速地为某个应用程序提供一个跟踪,如果你真的喜欢grep-ing文件的话,如果我想把它作为一个文本文件很容易得到。

为了确保日志系统本身不会成为一个问题,当然,我们在处理日志表写入的不同应用程序中使用了一个通用的代码框架。该框架的一部分还包括记录到文件,以防数据库本身出现问题,其中一部分涉及循环日志。至于空间问题,日志数据库处于不同的备份计划中,这实际上不是一个问题。空间(无后盾)很便宜。

我认为这解决了其他地方表达的大多数关切。这都是实施的问题。但是,如果我在这里停下来,它仍然是一个“没有更糟”的情况,这是一个错误的理由去设置DB日志记录。我喜欢的是,允许我们做一些、新的 things,这对平面文件来说要困难得多。

与档案相比,有四个主要改进。第一个是我已经提到的系统概述。第二个问题,也是国际海事组织最重要的问题,是检查是否有任何应用程序丢失了我们通常希望找到的信息。这种事情在传统的文件记录中几乎是不可能被发现的,除非你每天花很多时间查看那些告诉你一切正常的应用程序的令人麻木的日志,99%的时间。令人惊讶的是,如何释放视图来显示丢失的日志条目。大多数时候我们根本不需要看大部分的日志文件.如果没有数据库就会很危险和不负责任。

这带来了第三个改进。我们每天只发一封状态电子邮件,这是我们唯一需要回顾的事情,在每一天,一切正常运行。电子邮件中显示了错误和警告。丢失的日志被发送电子邮件的相同db作业重新记录为警告,丢失电子邮件是一件大事。我们可以发送一个特定的日志消息给我们的bug跟踪器,只需一次点击,就可以在每日的电子邮件中发送(它是html格式的,从web应用程序中提取数据)。

最后的改进是,如果我们确实希望更密切地跟踪某个特定的应用程序,比如在做了更改之后,我们可以订阅该特定应用程序的RSS提要,直到我们满意为止。从文本文件中更难做到这一点。

在我现在所处的位置上,我们更多地依赖第三方工具及其日志记录能力,这意味着要进行更多的手工检查。我真的很想念DB,我正在考虑编写一个工具来读取这些日志,并将它们重新记录到DB中以获得这些功能。

同样,我们使用文本文件作为后盾,正是这些新功能使数据库变得有价值。如果您要做的就是写一个DB,并尝试像使用旧文本文件那样使用它,那么它增加了不必要的复杂性,您也可以只使用旧的文本文件。正是为新特性构建系统的能力,才使它变得有价值。

票数 21
EN

Stack Overflow用户

发布于 2008-10-16 17:28:03

是的,我们在这里做,我受不了。我们在这里遇到的一个问题是,如果db (连接、损坏等)出现问题,那么所有的日志记录都会停止。我的另一个大问题是很难追踪问题。我们在这里也有问题,因为表日志占用了太多的空间,而且我们在移动数据库时不得不担心截断它们,因为我们的日志非常大。

我觉得它比日志文件更笨重。我发现很难看到存储在数据库中的“大图”。我承认我是一个日志文件的人,我喜欢打开一个文本文件并查看(regex),而不是使用sql来尝试和搜索一些东西。

我最后一次工作的地方是100 meg以上的日志文件。他们有点难打开,但如果你有正确的工具,它没有那么糟糕。我们也有一个记录消息的系统。您可以快速查看文件并确定哪些日志条目属于哪个进程。

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/209497

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档