回報錯誤

自動回報錯誤

您可以從 Cloud 函式發出錯誤, 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 中查看已回報的錯誤 在 GCP 控制台中也能看到您也可以查看從 您在 GCP 控制台的函式清單中選取了特定函式。

您的函式產生了未捕捉到的例外狀況會顯示在 Error Reporting 中。 請注意,部分未擷取的例外狀況類型 (例如 造成冷氣) start 指令發生在 未來的函式叫用。這會增加函式的時間 系統需要的測試程序

手動回報錯誤

傳送至 Cloud Logging

Cloud Functions 的 error 函式 記錄器 SDK 會同時向 Cloud Logging 和 Error Reporting 回報錯誤。如要加入錯誤中更多的背景資訊做為結構化資料,請傳送錯誤物件做為第二個引數:

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