当前位置:  开发笔记 > 编程语言 > 正文

使用SQL Server进行应用程序日志记录.优点缺点?

如何解决《使用SQLServer进行应用程序日志记录.优点缺点?》经验,为你挑选了3个好方法。

我有一个多用户应用程序,它为活动保留了一个集中的日志文件.现在,日志记录进入文本文件大约10MB-50MB /天.记录器每天轮换文本文件,我们保留过去4或5天的价值.比这更老的我们没兴趣.

它们很少被阅读:在开发应用程序以获取错误消息,诊断消息时,或者在应用程序处于生产状态时,对用户报告的问题或错误进行分类.

(这严格来说是应用程序日志.安全日志记录保存在别处.)

但是当他们被阅读时,他们就是痛苦的屁股.即使使用Perl,使用10MB文本文件也很有趣:文件中的字段(事务ID,用户ID等)很有用,但只是文本.消息是按顺序写入的,一次一个地写入,因此当尝试跟踪特定事务或用户时,交错活动全部混淆.

我正在寻找关于这个主题的想法.有人用SQL数据库完成了应用程序级日志记录并喜欢它吗?讨厌吗?



1> Ricardo Reye..:

我认为直接记录到数据库通常是一个坏主意,我会避免它.

主要原因是:一旦错误已经发生并且您无法重现它,当您可以使用它来验证您的应用程序验证时,一个好的日志将是最有用的.为了能够做到这一点,您需要确保日志记录本身是可靠的.为了使任何系统可靠,一个良好的开端是保持简单.

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

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

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

我认为这些是我不登录数据库的主要原因,尽管我过去曾这样做过.希望能帮助到你.



2> Joel Coehoor..:

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

我们有一些存储过程会针对我可以从网页加载的不同指标吐出一般系统运行状况的概述.我们还可以在给定的时间段内快速为给定的应用程序吐出一条跟踪,如果我想要将它作为文本文件很容易,那么如果你真的喜欢grep-ing文件.

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

我认为这解决了其他地方表达的大部分问题.这都是实施的问题.但是,如果我在这里停止,它仍然是"不会更糟"的情况,这是设置数据库日志记录的麻烦的一个坏理由.我喜欢这个是它允许我们做一些新的事情,这对平面文件更难.

文件有四个主要改进.首先是我已经提到的系统概述.第二个,也是最重要的,是检查是否有任何应用程序丢失了我们通常希望找到它们的消息.在传统的文件记录中几乎不可能发现这种事情,除非你每天都花费大量时间来审查那些只会告诉你99%的时间都没问题的应用程序.令人惊讶的是如何释放视图以显示丢失的日志条目.大多数时候我们根本不需要查看大多数日志文件......如果没有数据库,这将是危险和不负责任的.

这带来了第三个改进.我们生成了一个日常状态电子邮件,这是我们在一切正常运行的日子里唯一需要查看的内容.包含的电子邮件显示错误和警告.丢失的日志被发送电子邮件的同一个db作业重新记录为警告,并且丢失电子邮件是一件大事.我们可以在每日电子邮件中点击一下,向我们的错误跟踪器发送特定的日志消息(它是html格式的,从Web应用程序中提取数据).

最后的改进是,如果我们确实想要更密切地关注特定的应用程序,比如在做出更改之后,我们可以订阅该特定应用程序的RSS提要,直到我们满意为止.从文本文件中更难做到这一点.

我现在所处的位置,我们更多地依赖于第三方工具及其日志记录功能,这意味着要回到更多的人工审核.我真的很想念数据库,我打算编写一个工具来读取这些日志并将它们重新登录到数据库中以恢复这些功能.

我们再次使用文本文件作为后备,这是真正使数据库值得的新功能.如果您要做的就是写入数据库并尝试以与旧文本文件相同的方式使用它,这会增加不必要的复杂性,您也可以使用旧的文本文件.它能够为新功能构建系统,使其变得有价值.



3> kemiller2002..:

是的,我们在这里做,我无法忍受.我们遇到的一个问题是如果db(连接,损坏等)出现问题,所有日志记录都会停止.我的另一个大问题是难以查看跟踪问题.我们这里也遇到问题,表日志占用了太多空间,并且由于我们的日志太大而不得不担心在移动数据库时截断它们.

我认为它与日志文件相比很笨重.我发现很难看到存储在数据库中的"大图".我承认我是一个日志文件的人,我喜欢能够打开一个文本文件并查看(正则表达式)而不是使用sql来尝试搜索某些东西.

我工作的最后一个地方有100兆加的日志文件.它们有点难以打开,但如果你有合适的工具,它就不那么糟糕了.我们有一个系统来记录消息.您可以快速查看该文件并确定哪个日志条目属于哪个进程.

推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有