如何减少Web应用程序的冗余日志消息?

时间:2009-07-02 15:26:19

标签: web-applications logging error-logging

是否有人就如何最小化Web应用程序的日志提出任何建议?

现在,我正在记录每个错误。因此,如果存在每个请求发生错误的情况(例如数据库连接问题),则可能会在每个请求中为每个用户记录该错误。可以想象,用太多的东西开始积累一个带有冗余日志错误的巨大日志文件并不需要太多用户。

我发现创建某种类型的标记机制,以便在N分钟内不记录相同的错误。我不喜欢这个有两个原因; 1)它可以隐藏其他问题中最重要的问题; 2)级联错误可能无法正确记录错误跟踪,省略以前记录的错误,可能会导致我的初步诊断失败。

我确定我不是第一个遇到这个问题的人...有没有人对如何减少网络应用程序的冗余日志消息有什么建议?

4 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

每当记录器看到这样的字符串并且错误匹配时,它就会增加n,直到出现另一种类型的错误。

答案 2 :(得分:1)

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

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

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

答案 3 :(得分:0)

我已将其与用户错误消息相结合,因此当用户显示错误消息时,他们可以单击,确定或发送给支持。然后是完整的错误,调用堆栈,&完整的请求信息将输入错误跟踪器。

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

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