เขียนและดูบันทึก

การบันทึกเป็นเครื่องมือสำคัญสำหรับการดีบักและตรวจสอบโค้ด Cloud Functions ให้คุณมีตัวเลือกในการใช้ logger SDK, Google Cloud Logging แบบกำหนดเอง หรือมาตรฐานอ็อบเจ็กต์ console สำหรับการพัฒนาสำหรับเว็บ

การเขียนบันทึก

แม้ว่า SDK ตัว บันทึก ฟังก์ชันระบบคลาวด์จะแนะนำสำหรับสถานการณ์ส่วนใหญ่ คุณอาจเลือกตัวเลือกอื่นด้วยเหตุผลเหล่านี้:

  • คุณมีฐานรหัสอยู่แล้วและไม่ต้องการสร้างปัจจัยใหม่จาก console.log
  • คุณคุ้นเคยกับ Cloud Logging (เดิมคือการบันทึก StackDriver) และต้องการใช้สำหรับการบันทึกแบบกำหนดเอง

การใช้ SDK ตัวบันทึกฟังก์ชันคลาวด์

SDK ตัวบันทึกฟังก์ชันระบบคลาวด์มีอินเทอร์เฟซมาตรฐานที่มีคำสั่ง API ที่คล้ายคลึงกันกับ console.log และรองรับระดับบันทึกอื่นๆ คุณสามารถใช้ SDK นี้เพื่อบันทึกเหตุการณ์ด้วย ข้อมูลที่มีโครงสร้าง ช่วยให้วิเคราะห์และตรวจสอบได้ง่ายขึ้น

logger SDK รองรับรายการบันทึกโดยเป็นส่วนหนึ่งของการนำเข้าไวลด์การ์ด ตัวอย่างเช่น:

  const functions = require("firebase-functions");

  functions.logger.log("Hello from info. Here's an object:", someObj);

หรือคุณสามารถใช้การส่งออกแต่ละรายการได้ ตัวอย่างนี้แสดงข้อมูลที่มีโครงสร้างที่แนบมากับบันทึกเป็นอาร์กิวเมนต์สุดท้าย:

const { warn } = require("firebase-functions/lib/logger");


// Attach structured data to the log as the last argument.
warn("This is a 'WARNING' severity message with some metadata.", {
  key1: 'val1',
  key2: 'val2'
});
  • คำสั่ง logger.log() มีระดับบันทึก INFO
  • คำสั่ง logger.info() มีระดับบันทึก INFO
  • คำสั่ง logger.warn() มีระดับบันทึก ข้อผิดพลาด
  • คำสั่ง logger.error() มีระดับบันทึก ข้อผิดพลาด
  • ข้อความระบบภายในมีระดับบันทึก DEBUG

ด้วย logger.write() คุณสามารถเขียนรายการบันทึกเพิ่มระดับความรุนแรงของบันทึกของ CRITICAL , ALERT และ EMERGENCY ดู LogSeverity

บันทึก Cloud Logging แบบกำหนดเอง

บันทึก Cloud Functions ด้วย logger SDK ได้รับการสนับสนุนโดย Cloud Logging คุณสามารถใช้ ไลบรารี Cloud Logging สำหรับ Node.js เพื่อบันทึกเหตุการณ์ด้วยข้อมูลที่มีโครงสร้าง ช่วยให้วิเคราะห์และตรวจสอบได้ง่ายขึ้น

const { Logging } = require('@google-cloud/logging');

// ...

// Instantiate the logging SDK. The project ID will
// be automatically inferred from the Cloud Functions environment.
const logging = new Logging();
const log = logging.log('my-custom-log-name');

// This metadata is attached to each log entry. This specifies a fake
// Cloud Function called 'Custom Metrics' in order to make your custom
// log entries appear in the Cloud Functions logs viewer.
const METADATA = {
  resource: {
    type: 'cloud_function',
    labels: {
      function_name: 'CustomMetrics',
      region: 'us-central1'
    }
  }
};

// ...

// Data to write to the log. This can be a JSON object with any properties
// of the event you want to record.
const data = {
  event: 'my-event',
  value: 'foo-bar-baz',

  // Optional 'message' property will show up in the Firebase
  // console and other human-readable logging surfaces
  message: 'my-event: foo-bar-baz'
};

// Write to the log. The log.write() call returns a Promise if you want to
// make sure that the log was written successfully.
const entry = log.entry(METADATA, data);
log.write(entry);

การใช้ console.log

วิธีแก้ปัญหาที่แนะนำสำหรับการบันทึกจากฟังก์ชันคือการใช้ logger SDK คุณสามารถใช้การเรียกการบันทึก JavaScript มาตรฐานแทน เช่น console.log และ console.error แต่ก่อนอื่น คุณต้องมีโมดูลพิเศษเพื่อแก้ไขวิธีการมาตรฐานเพื่อให้ทำงานได้อย่างถูกต้อง:

require("firebase-functions/lib/logger/compat");

เมื่อคุณต้องใช้โมดูลความเข้ากันได้ของตัวบันทึก คุณสามารถใช้เมธอด console.log() ได้ตามปกติในโค้ดของคุณ:

exports.helloError = functions.https.onRequest((request, response) => {
  console.log('I am a log entry!');
  response.send('Hello World...');
});
  • คำสั่ง console.log() มีระดับบันทึก INFO
  • คำสั่ง console.info() มีระดับบันทึก INFO
  • คำสั่ง console.warn() มีระดับบันทึก ข้อผิดพลาด
  • คำสั่ง console.error() มีระดับบันทึก ข้อผิดพลาด
  • ข้อความระบบภายในมีระดับบันทึก DEBUG

กำลังดูบันทึก

บันทึกสำหรับ Cloud Functions สามารถดูได้ใน Google Cloud Console , Cloud Logging UI หรือผ่านเครื่องมือบรรทัดคำสั่ง firebase

การใช้ Firebase CLI

หากต้องการดูบันทึกด้วยเครื่องมือ firebase ให้ใช้ functions:log คำสั่ง:

firebase functions:log

หากต้องการดูบันทึกสำหรับฟังก์ชันเฉพาะ ให้ระบุชื่อฟังก์ชันเป็นอาร์กิวเมนต์:

firebase functions:log --only <FUNCTION_NAME>

สำหรับตัวเลือกการดูบันทึกทั้งหมด โปรดดูความช่วยเหลือสำหรับ functions:log :

firebase help functions:log

การใช้ Google Cloud Console

คุณสามารถดูบันทึกสำหรับฟังก์ชันต่างๆ ใน ​​Google Cloud Console

การใช้ Cloud Logging UI

คุณสามารถ ดูบันทึกสำหรับ Cloud Functions ใน Cloud Logging UI

กำลังวิเคราะห์บันทึก

Cloud Logging มีชุดเครื่องมือวิเคราะห์บันทึกที่มีประสิทธิภาพซึ่งคุณสามารถใช้เพื่อตรวจสอบ Cloud Functions ของคุณ เครื่องมือเหล่านี้มีประสิทธิภาพโดยเฉพาะอย่างยิ่งเมื่อรวมกับ การบันทึกแบบกำหนดเอง

เมตริกตามบันทึก

ใน Cloud Logging UI ให้ใช้ช่องตัวกรองขั้นสูงเพื่อจำกัดขอบเขตบันทึกให้เหลือเฉพาะฟังก์ชันที่คุณต้องการวิเคราะห์ จากนั้นคลิก ส่งตัวกรอง เพื่อกรองบันทึก ตัวอย่างเช่น คุณสามารถวิเคราะห์บันทึกจากฟังก์ชันเดียวเท่านั้น:

resource.type="cloud_function"
resource.labels.function_name="myCloudFunction"
resource.labels.region="us-central1"

หากคุณบันทึกเหตุการณ์ด้วยเพย์โหลด JSON ที่กำหนดเอง คุณสามารถกรองโดยใช้คีย์และค่าที่คุณระบุ:

resource.type="cloud_function"
resource.labels.function_name="CustomMetrics"
jsonPayload.event="my-event"

เมื่อคุณกรองบันทึกแล้ว คุณสามารถวิเคราะห์บันทึกโดยใช้ เมตริกตามบันทึก คลิกปุ่ม สร้างเมตริก เพื่อเปิดตัวแก้ไขเมตริกและเลือกประเภทเมตริก:

  • ตัวนับเมตริก: นับจำนวนรายการบันทึกที่ตรงกับตัวกรอง ตัวอย่างเช่น คุณสามารถนับจำนวนครั้งที่เหตุการณ์หนึ่งๆ เกิดขึ้นได้
  • เมตริกการกระจาย: รวบรวมข้อมูลตัวเลขจากรายการบันทึกที่ตรงกับตัวกรอง ตัวอย่างเช่น คุณสามารถติดตามเวลาแฝงของการดำเนินการบางอย่างภายในฟังก์ชันของคุณได้

สำหรับบันทึกแบบข้อความ เช่น ผลลัพธ์จาก console.log() ในฟังก์ชันของคุณ คุณสามารถแยกค่าและป้ายกำกับจากฟิลด์ textPayload โดยใช้นิพจน์ทั่วไป สำหรับบันทึกที่กำหนดเองที่มีข้อมูลที่มีโครงสร้าง คุณจะเข้าถึงข้อมูลในช่อง jsonPayload ได้โดยตรง

แผนภูมิและการแจ้งเตือน

เมื่อคุณสร้างเมตริกตามบันทึกเพื่อตรวจสอบฟังก์ชันของคุณแล้ว คุณสามารถสร้างแผนภูมิและการแจ้งเตือนตามเมตริกเหล่านี้ได้ ตัวอย่างเช่น คุณสามารถสร้างแผนภูมิเพื่อแสดงภาพเวลาแฝงเมื่อเวลาผ่านไป หรือสร้างการแจ้งเตือนเพื่อแจ้งให้คุณทราบว่ามีข้อผิดพลาดเกิดขึ้นบ่อยเกินไปหรือไม่

ดู การสร้างแผนภูมิและการแจ้งเตือน สำหรับข้อมูลโดยละเอียดเกี่ยวกับวิธีใช้เมตริกตามบันทึกในแผนภูมิและนโยบายการแจ้งเตือน