گزارش خودکار خطاها
شما میتوانید خطایی را از یک تابع به گزارش خطا ارسال کنید، همانطور که در زیر نشان داده شده است:
نود جی اس
// These WILL be reported to Error Reporting
throw new Error('I failed you'); // Will cause a cold start if not caught
پایتون
@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 را از SDK ثبتکننده توابع ابری وارد کنید:
// All available logging functions
const {
log,
info,
debug,
warn,
error,
write,
} = require("firebase-functions/logger");
ارسال به Cloud Logging
تابع error از SDK مربوط به ثبتکننده توابع ابری (Cloud Functions logger SDK)، خطاها را هم به Cloud Logging و هم به Error Reporting گزارش میدهد. برای اینکه محتوای بیشتری از خطا به صورت دادههای ساختاریافته در نظر گرفته شود، یک شیء خطا را به عنوان آرگومان دوم ارسال کنید:
} catch (err) {
// Attach an error object as the second argument
error("Unable to read quote from Firestore, sending default instead",
err);