エラーの報告

エラーレベルに応じて Error オブジェクトをコンソールのログに記録するだけで、Cloud Function から Stackdriver Error Reporting にエラーを送信できます。

console.error(new Error('message'));

報告されたエラーは、GCP Console の Stackdriver Error Reporting で表示できます。また、GCP Console で関数のリストから関数を選択して、その特定の関数から報告されたエラーを表示することもできます。

関数によってキャッチされないエラーが生成された場合や、Error 型のオブジェクトを明示的にスローした場合は、そのエラーが Stackdriver Error Reporting にも表示されます。ただし、キャッチされないエラーや例外により、その後の関数呼び出しに対してコールド スタートが強制されることになります。したがって、パフォーマンス上の理由により、最初のアプローチ(Error オブジェクトのロギング)を使用してください。

以下の場合は、Stackdriver エラーが送信されないことに注意してください。

  • Error 以外のオブジェクト(throw 1; など)をスローした場合。
  • 情報レベルのエラー オブジェクト(console.info(new Error('message')); など)をログに記録する場合。
  • Error 以外のオブジェクト(console.error('message'); など)をログに記録する場合。
  • 正常に完了した関数で結果がエラーになった場合(バックグラウンド関数での callback('message');HTTP 関数での res.status(500).send('message'); など)。

try-catch ステートメントの catch ブロックや、Promise の catch コールバックでエラーが報告された場合、err オブジェクトがすでに型付き Error オブジェクトになっていることがよくあります。Google 提供のライブラリを介して Google サービスを使用している場合は、提供された err オブジェクトを直接ログに記録できます。

try {
    // Call a Google service
} catch (err) {
    // err is already an Error
    console.error(err);
}

提供された errError オブジェクトであるかどうかわからない場合は、次のようにすることで確認できます。

try {
    // Call a a different service
} catch (err) {
    if(err instanceof Error) {
        console.error(err);
    } else {
        console.error(new Error(err));
    }
}
このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Cloud Functions のドキュメント