回報錯誤

自動回報錯誤

您可以將函式中的錯誤發送至 Error Reporting,方式如下:

Node.js

// These WILL be reported to Error Reporting
throw new Error('I failed you'); // Will cause a cold start if not caught

Python

@functions_framework.http
def hello_error_1(request):
    # This WILL be reported to Error Reporting,
    # and WILL NOT show up in logs or
    # terminate the function.
    from google.cloud import error_reporting

    client = error_reporting.Client()

    try:
        raise RuntimeError("I failed you")
    except RuntimeError:
        client.report_exception()

    # This WILL be reported to Error Reporting,
    # and WILL terminate the function
    raise RuntimeError("I failed you")

@functions_framework.http
def hello_error_2(request):
    # These errors WILL NOT be reported to Error
    # Reporting, but will show up in logs.
    import logging
    import sys

    print(RuntimeError("I failed you (print to stdout)"))
    logging.warning(RuntimeError("I failed you (logging.warning)"))
    logging.error(RuntimeError("I failed you (logging.error)"))
    sys.stderr.write("I failed you (sys.stderr.write)\n")

    # This is considered a successful execution and WILL NOT be reported
    # to Error Reporting, but the status code (500) WILL be logged.
    from flask import abort

    return abort(500)

如需更精細的錯誤報告,請使用 Error Reporting 用戶端程式庫

您可以在 Google Cloud 控制台的「Error Reporting」中查看回報的錯誤;或是在 Google Cloud 控制台的函式清單選取特定函式,查看該函式所回報的錯誤。

由函式所產生的未處理例外狀況,都會顯示在Error Reporting 中。請注意,某些類型的未處理例外狀況 (例如以非同步方式擲回的項目),會在後續函式叫用時導致冷啟動,進而增加函式執行所需的時間。

手動回報錯誤

匯入依附元件

如要從函式向 Error Reporting 回報錯誤,請從 Cloud Functions logger SDK 匯入 error 函式:

// All available logging functions
const {
  log,
  info,
  debug,
  warn,
  error,
  write,
} = require("firebase-functions/logger");

正在傳送至「Cloud Logging

Cloud Functions 記錄器 SDK 的 error 函式會將錯誤回報給 Cloud LoggingError Reporting。如要將錯誤的更多脈絡資訊納入結構化資料,請將錯誤物件做為第二個引數傳遞:

 } catch (err) {
  // Attach an error object as the second argument
  error("Unable to read quote from Firestore, sending default instead",
      err);