การบันทึกเป็นเครื่องมือสำคัญสำหรับการแก้ไขข้อบกพร่องและการตรวจสอบโค้ด
Cloud Functions ให้คุณเลือกใช้ SDK ของ Logger, Google
Cloud Logging ที่กำหนดเอง หรือออบเจ็กต์ console มาตรฐานสำหรับการพัฒนาเว็บ
การเขียนบันทึก
แม้ว่าเราจะแนะนำให้ใช้ Cloud Functions Logger SDK ในสถานการณ์ส่วนใหญ่ แต่คุณอาจเลือกใช้ตัวเลือกอื่นๆ ด้วยเหตุผลต่อไปนี้
- คุณมีฐานของโค้ดอยู่แล้วและไม่ต้องการปรับโครงสร้างใหม่จาก
console.log - คุณคุ้นเคยกับ Cloud Logging (เดิมชื่อ StackDriver Logging) และต้องการ ใช้ Cloud Logging สำหรับการบันทึกที่กำหนดเอง
การใช้ SDK ของ LoggerCloud Functions
SDK ของ Logger ของ Cloud Functions มีอินเทอร์เฟซมาตรฐานที่มี API คล้ายกับคำสั่ง console.log และรองรับระดับบันทึกอื่นๆ
คุณสามารถใช้ SDK นี้เพื่อบันทึกเหตุการณ์ด้วย Structured Data, ซึ่งช่วยให้วิเคราะห์และตรวจสอบได้ง่ายขึ้น
SDK ของ Logger รองรับรายการบันทึกที่เป็นส่วนหนึ่งของการนำเข้าไวลด์การ์ด เช่น
const functions = require("firebase-functions/v1");
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 บันทึกที่ใช้ SDK ของ Logger ได้รับการสนับสนุนโดย Cloud Logging คุณสามารถใช้ไลบรารี Cloud Logging สำหรับ Node.js เพื่อบันทึกเหตุการณ์ด้วย Structured Data ซึ่งช่วยให้วิเคราะห์และตรวจสอบได้ง่ายขึ้น
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
โซลูชันที่แนะนำสำหรับการบันทึกจากฟังก์ชันคือการใช้ SDK ของ Logger สำหรับแพลตฟอร์มของคุณ เมื่อใช้ Node.js คุณสามารถใช้การเรียกการบันทึก JavaScript มาตรฐาน เช่น console.log และ console.error แทนได้ แต่ก่อนอื่นคุณต้องกำหนดให้ใช้โมดูลพิเศษเพื่อแก้ไขวิธีการมาตรฐานให้ทำงานได้อย่างถูกต้อง
require("firebase-functions/logger/compat");
เมื่อกำหนดให้ใช้โมดูลความเข้ากันได้ของ Logger แล้ว คุณจะใช้วิธีการ 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 คอนโซล,
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
คุณสามารถดูบันทึกของฟังก์ชันได้ใน Google Cloud คอนโซล
การใช้ UI ของ Cloud Logging
คุณสามารถดูบันทึกสำหรับCloud Functions ใน UI Cloud Logging
การวิเคราะห์บันทึก
Cloud Logging มีชุดเครื่องมือวิเคราะห์บันทึกที่มีประสิทธิภาพซึ่งคุณสามารถ ใช้เพื่อตรวจสอบ Cloud Functions ได้
แผนภูมิและการแจ้งเตือน
เมื่อสร้างเมตริกตามบันทึกเพื่อตรวจสอบฟังก์ชันแล้ว คุณจะสร้างแผนภูมิและการแจ้งเตือนตามเมตริกเหล่านี้ได้ เช่น คุณสามารถสร้างแผนภูมิเพื่อแสดงภาพเวลาในการตอบสนองเมื่อเวลาผ่านไป หรือสร้างการแจ้งเตือนเพื่อแจ้งให้คุณทราบหากเกิดข้อผิดพลาดบางอย่างบ่อยเกินไป
ดูข้อมูลโดยละเอียดเกี่ยวกับวิธีใช้เมตริกตามบันทึกในแผนภูมิและนโยบายการแจ้งเตือนได้ที่การสร้างแผนภูมิและการแจ้งเตือน