错误如何分组

Stackdriver Error Reporting 对根本原因相同的错误进行分组。

分组前

Error Reporting 首先会作出以下决定,然后再评估错误以进行分组:

  • 在 App Engine 标准环境中,忽略严重性标记为低于 ERROR 的错误。
  • 忽略不属于用户的堆栈帧(例如,属于公共库的堆栈帧)。
  • 将一个或多个堆栈帧的所有重复序列替换为该序列的单个匹配项。
  • 移除编译器引入的方法和符号。

分组

系统评估错误时遵循以下常规模式:

  • 将类型相同且堆栈类似的异常分在同一组。
  • 对于通常与发生异常的源位置无关的异常,忽略堆栈轨迹。
  • 如果没有异常堆栈的错误是由同一个日志语句(近似于从 (reportLocation) 报告错误的源位置)创建的,则会分在同一组。

具体而言,应用以下规则的顺序遵循下方列出的顺序:

错误类型 分组依据
由环境中的一般问题引发的错误

例如,特定于 App Engine 的问题:


com.google.apphosting.runtime.HardDeadlineExceededError

com.google.appengine.api.datastore.DatastoreTimeoutException

Java 问题:


java.util.concurrent.CancellationException
按异常类型分组。
堆栈轨迹错误。如果是嵌套异常,则考虑最内层的异常。

例如:


runtime error: index out of range
package1.func1()
      file1:20
package2.func2()
      file2:33
按异常类型和 5 个最顶层的帧分组。
没有堆栈轨迹但有函数名称和消息的错误。

例如:


runtime error: index out of range
    func1()
按函数名称和消息分组。仅考虑消息的前 3 个字面量标记。在左侧示例中,它们是 runtimeerrorindex
此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页
Stackdriver Error Reporting 文档