Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

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

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

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

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

  • คุณมีฐานรหัสที่มีอยู่และไม่ต้องการที่จะ refactor จาก 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() คำสั่งที่มีระดับการบันทึกข้อมูล
  • logger.info() คำสั่งที่มีระดับการบันทึกข้อมูล
  • logger.warn() คำสั่งที่มีระดับการบันทึกข้อผิดพลาด
  • logger.error() คำสั่งที่มีระดับการบันทึกข้อผิดพลาด
  • ข้อความระบบภายในมีระดับการบันทึกดีบัก

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

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

เมฆบันทึกฟังก์ชั่นที่มี SDK คนตัดไม้ได้รับการสนับสนุนจาก คลาวด์เข้าสู่ระบบ คุณสามารถใช้ ห้องสมุดเข้าสู่ระบบคลาวด์สำหรับ 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

วิธีการแก้ปัญหาที่แนะนำสำหรับการเข้าสู่ระบบจากฟังก์ชั่นคือการใช้ 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() คำสั่งที่มีระดับการบันทึกข้อมูล
  • console.info() คำสั่งที่มีระดับการบันทึกข้อมูล
  • console.warn() คำสั่งที่มีระดับการบันทึกข้อผิดพลาด
  • console.error() คำสั่งที่มีระดับการบันทึกข้อผิดพลาด
  • ข้อความระบบภายในมีระดับการบันทึกดีบัก

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

บันทึกสำหรับที่ฟังก์ชั่นคลาวด์สามารถดูได้ทั้งในคอนโซล Firebase เมฆเข้าสู่ระบบ UI หรือผ่านทาง firebase เครื่องมือบรรทัดคำสั่ง

การใช้ Firebase CLI

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

firebase functions:log

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

firebase functions:log --only <FUNCTION_NAME>

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

firebase help functions:log

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

คุณสามารถ ดูบันทึกสำหรับฟังก์ชั่นคลาวด์ จากคอนโซล Firebase

การใช้ Cloud Logging UI

คุณสามารถ ดูบันทึกสำหรับฟังก์ชั่นคลาวด์ ในการเข้าสู่ระบบ UI เมฆ

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

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

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

ในการเข้าสู่ระบบ 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 ฟิลด์

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

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

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