การบันทึกเป็นเครื่องมือสำคัญสำหรับการแก้ไขข้อบกพร่องและตรวจสอบโค้ด
Cloud Functions มีตัวเลือกให้คุณใช้ SDK บันทึก Google Cloud Logging ที่กําหนดเอง หรือมาตรฐานออบเจ็กต์ console
สําหรับการพัฒนาสําหรับเว็บ
การเขียนบันทึก
แม้ว่าเราจะแนะนำให้ใช้ Cloud FunctionsLogger SDK ในสถานการณ์ส่วนใหญ่ แต่คุณอาจเลือกตัวเลือกอื่นด้วยเหตุผลต่อไปนี้
- คุณมีฐานของโค้ดอยู่แล้ว และไม่ต้องการเปลี่ยนโครงสร้างภายในโค้ดจาก
console.log
- คุณคุ้นเคยกับ Cloud Logging (เดิมคือบันทึก StackDriver) และต้องการนำไปใช้กับการบันทึกที่กำหนดเอง
การใช้ SDK บันทึก Cloud Functions
Logger SDK ของ Cloud Functions มีอินเทอร์เฟซมาตรฐานที่มี API คล้ายกับคำสั่ง console.log
และรองรับระดับการบันทึกอื่นๆ
คุณสามารถใช้ SDK นี้เพื่อบันทึกเหตุการณ์ด้วย Structured Data ซึ่งช่วยให้การวิเคราะห์และการตรวจสอบง่ายขึ้น
SDK บันทึกรองรับรายการบันทึกที่เป็นส่วนหนึ่งของการนําเข้าไวลด์การ์ด เช่น
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()
มีระดับบันทึกเป็นคำเตือน - คำสั่ง
logger.error()
มีระดับการบันทึกเป็น ERROR - ข้อความของระบบภายในจะมีระดับบันทึกเป็นแก้ไขข้อบกพร่อง
เมื่อใช้ logger.write()
คุณจะเขียนรายการบันทึกระดับความรุนแรงเพิ่มเติมได้ CRITICAL
, ALERT
และ EMERGENCY
โปรดดู LogSeverity
บันทึก Cloud Logging ที่กําหนดเอง
บันทึก Cloud Functions ด้วย SDK บันทึกการณ์จะได้รับการสำรองข้อมูลโดย 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 บันทึกสําหรับแพลตฟอร์มของคุณ เมื่อใช้ 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 - ข้อความของระบบภายในจะมีระดับบันทึกเป็นแก้ไขข้อบกพร่อง
การดูบันทึก
บันทึกของ Cloud Functions จะดูได้ในคอนโซล Google Cloud, 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
การใช้ UI ของ Cloud Logging
คุณสามารถดูบันทึกของ Cloud Functions ได้ในส่วน UI ของ Cloud Logging
การวิเคราะห์บันทึก
Cloud Logging มีชุดเครื่องมือวิเคราะห์บันทึกที่มีประสิทธิภาพซึ่งคุณใช้ตรวจสอบ Cloud Functions ได้
แผนภูมิและการแจ้งเตือน
เมื่อสร้างเมตริกตามบันทึกเพื่อตรวจสอบฟังก์ชันแล้ว คุณสามารถสร้างแผนภูมิและการแจ้งเตือนตามเมตริกเหล่านี้ได้ เช่น คุณอาจสร้างแผนภูมิเพื่อแสดงภาพเวลาในการตอบสนองเมื่อเวลาผ่านไป หรือสร้างการแจ้งเตือนเพื่อแจ้งให้คุณทราบหากข้อผิดพลาดบางอย่างเกิดขึ้นบ่อยเกินไป
ดูข้อมูลโดยละเอียดเกี่ยวกับวิธีใช้เมตริกตามบันทึกในแผนภูมิและนโยบายการแจ้งเตือนได้ที่การสร้างแผนภูมิและการแจ้งเตือน