3

有人对如何最小化我的 Web 应用程序日志有任何建议吗?

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

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

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

4

4 回答 4

2

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

于 2009-07-02T15:29:14.283 回答
2

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

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

于 2009-07-02T17:49:34.653 回答
2

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

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

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

于 2009-08-24T16:21:38.460 回答
0

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

这还没有发布,所以我们还没有看到这是否是一个好主意……会及时通知你。

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

于 2009-08-24T16:09:32.977 回答