エラーのグループ化方法

Error Reporting では、根本原因が同じであると考えられるエラーをグループ化します。

グループ化する前に

Error Reporting ではグループ化するためにエラーを評価する前に、以下のことを決定します。

  • App Engine スタンダード環境上で、ERROR より低い重要度でログ記録されたエラーを無視する。
  • ユーザーによって所有されていないスタック フレームを無視する(例: 公開ライブラリに属するもの)。
  • スタック フレームのいずれかの繰り返しシーケンスが、そのシーケンスの 1 回の発生により置き換えられる。
  • コンパイラにより導入された方法やシンボルが削除される。

グループ化

システムがエラーを評価する際には、次のような一般的なパターンに従います。

  • 同じ例外タイプで、類似のスタックがある場合は、例外はまとめてグループ化される。
  • スタック トレースは、その例外が発生したソース ロケーションに特に関係のない例外に関しては無視される。
  • 例外スタックのないエラーは、同じログ記述によって作成され、その報告元(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 です。