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


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

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

ขณะที่บันทึก Cloud Functions แนะนำให้ใช้ SDK กับสถานการณ์ส่วนใหญ่ คุณอาจเลือกตัวเลือกใดตัวเลือกหนึ่งต่อไปนี้

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

การใช้ Cloud Functions Logger SDK

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

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

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

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

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

const { warn } = require("firebase-functions/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() มีระดับการบันทึกเป็น WARNING
  • คำสั่ง logger.error() มีระดับการบันทึกเป็น 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 สำหรับแพลตฟอร์มของคุณ เมื่อใช้ Node.js คุณจะใช้การบันทึก JavaScript มาตรฐานแทนได้ เช่น console.log และ console.error แต่คุณต้องมี โมดูลพิเศษเพื่อแพตช์วิธีการมาตรฐานเพื่อให้ทำงานได้อย่างถูกต้อง:

require("firebase-functions/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() มีระดับการบันทึกเป็น ERROR
  • คำสั่ง console.error() มีระดับการบันทึกเป็น ERROR
  • ข้อความของระบบภายในจะมีระดับการบันทึก DEBUG

การดูบันทึก

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

การใช้ Firebase CLI

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

firebase functions:log

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

firebase functions:log --only <FUNCTION_NAME>

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

firebase help functions:log

การใช้คอนโซล Google Cloud

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

การใช้ UI ของ Cloud Logging

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

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

Cloud Logging มีชุดเครื่องมือวิเคราะห์บันทึกประสิทธิภาพสูงที่คุณทำสิ่งต่อไปนี้ได้ ใช้เพื่อตรวจสอบ Cloud Functions

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

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

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