การรายงานข้อผิดพลาดโดยอัตโนมัติ
คุณสามารถส่งข้อผิดพลาดจากฟังก์ชันไปยัง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ได้
คุณดูข้อผิดพลาดที่รายงานได้ในError Reporting ในคอนโซล Google Cloud และยังดูข้อผิดพลาดที่รายงานจากฟังก์ชันหนึ่งๆ ได้ด้วยเมื่อเลือกจากรายการฟังก์ชันในคอนโซล Google Cloud
ข้อยกเว้นที่ไม่ได้จัดการซึ่งฟังก์ชันสร้างขึ้นจะปรากฏใน Error Reporting โปรดทราบว่าข้อยกเว้นที่ไม่ได้จัดการบางประเภท (เช่น ข้อยกเว้นที่ส่ง แบบไม่พร้อมกัน) จะทำให้เกิดการเริ่มต้นแบบเย็นเมื่อมีการเรียกใช้ฟังก์ชันในอนาคต ซึ่งจะเพิ่มระยะเวลาที่ฟังก์ชัน ใช้ในการเรียกใช้
การรายงานข้อผิดพลาดด้วยตนเอง
การนำเข้าทรัพยากร Dependency
หากต้องการรายงานข้อผิดพลาดไปยังError Reportingจากฟังก์ชัน ให้นำเข้าฟังก์ชัน error จาก Cloud Functions
logger
SDK ดังนี้
// All available logging functions
const {
log,
info,
debug,
warn,
error,
write,
} = require("firebase-functions/logger");
กำลังส่งไปยัง Cloud Logging
error ฟังก์ชันจาก Cloud Functions
Logger
SDK จะรายงานข้อผิดพลาดไปยังทั้ง Cloud Logging และ Error Reporting หากต้องการรวมบริบทเพิ่มเติมจากข้อผิดพลาดเป็น Structured Data ให้ส่งออบเจ็กต์ข้อผิดพลาดเป็นอาร์กิวเมนต์ที่ 2 ดังนี้
} catch (err) {
// Attach an error object as the second argument
error("Unable to read quote from Firestore, sending default instead",
err);