2009-07-02 124 views
2

有没有人有关于如何最小化我的Web应用程序日志的任何建议?如何减少Web应用程序的冗余日志消息?

现在,我记录每一个错误。因此,如果出现每次请求发生错误(例如数据库连接问题)的情况,则可能会在每次请求时为每个用户记录日志。正如你可以想象的那样,并不需要太多的用户做太多事情来开始收集具有冗余日志错误的巨大日志文件。

我想到了创建某种类型的标记机制,以便在N分钟内不记录相同的错误。我不喜欢这个有两个原因。 1)它可以将其中最重要的问题隐藏起来,2)级联错误可能不会正确记录它们的错误踪迹,省略了以前记录的错误,可能会导致我的初步诊断。

我敢肯定,我不是第一个有这个问题的人...有没有人有任何建议如何减少Web应用程序的冗余日志消息?

+0

你正在使用什么日志框架? log4net,ELMAH,企业,本土,其他? – 2009-07-02 15:34:39

+0

@ Dillie-O-Homegrown。但我愿意改变。你是否建议日志框架能为我处理这个问题? – 2009-07-02 15:38:17

回答

0

我已经与我的用户错误信息相结合,所以当错误信息显示给用户,他们可以点击,确定或发送到支持。然后完整的错误,调用堆栈,&完整的请求信息被输入到错误跟踪器中。

这还没有发布,所以我们还没有看到这是不是一个好主意......会让你张贴。

PS-I已回答我自己的问题作为备案,并选择它,因为其他答案不符合我的需要。

2

您可以创建一个日志记录系统,该日志系统记录到数据库,并设置一个标志来确定是记录单个条目,还是只计算基本日志条目的计数器。通过计数,您可以看到错误的总数,但没有爆炸的日志文件。

+0

谢谢,这是一个好主意,但我更愿意登录到文本文件。 – 2009-07-02 15:39:03

1

您可以尝试将最后一个条目与您要放入日志的错误进行比较。如果这是相同的类型和来源,则在末尾附加一个字符串“(重复n次)”。

每次记录看到这样的字符串和错误匹配,它可以增加n个,直到另一个错误类型的用武之地。

+0

谢谢。我想到了这一点,但我不想进入'阅读'日志。 – 2009-07-02 18:12:52

1

要回答您在评论中提出的问题,据我所知,没有包含此类功能的开箱即用解决方案。

另一个需要考虑的想法是(我意识到在这一点上你已经接受了你自己的答案)就是为系统中的每个错误记录点分配一个ID。当记录错误时,您可以保存错误标识的简单哈希表以及记录错误的时间。然后在处理日志时,如果错误已经存在于散列中,并且已经在5分钟内(或者您决定的任何时间),那么您可以简单地中止日志并更新时间戳。

我不确定是否让用户发送错误消息请求将解决您的问题,因为如果您的所有用户都提交了该消息,它将与错误日志一样,只有您的收件箱将被淹没而不是简单地监视日志文件本身。