כתיבה והצגה של יומנים


רישום ביומן הוא כלי חשוב לניפוי באגים ולמעקב אחר קוד. ב-Cloud Functions יש לכם אפשרות להשתמש ב-SDK של ה-logger, ב-Cloud Logging בהתאמה אישית של Google או בתקן האובייקט console לפיתוח לאינטרנט.

כתיבה ביומן

מומלץ להשתמש ב-SDK של יומן Cloud Functions ברוב המקרים, אבל יכול להיות שתבחרו באחת מהאפשרויות האחרות מהסיבות הבאות:

  • יש לכם קוד בסיס קיים ואתם מעדיפים לא לבצע רפרסוקטור מ-console.log.
  • אתם מכירים את Cloud Logging (לשעבר הרישום ביומן של StackDriver) ומעדיפים להשתמש בו לצורך רישום ביומן בהתאמה אישית.

שימוש ב-SDK של ה-logger של Cloud Functions

ה-SDK של יומן הרישום Cloud Functions מספק ממשק סטנדרטי עם ממשק API דומה להצהרות console.log, ותומך ברמות יומן אחרות. אפשר להשתמש ב-SDK הזה כדי לתעד אירועים עם נתונים מובְנים, וכך לבצע ניתוח ומעקב בקלות רבה יותר.

ה-SDK של ה-logger תומך ברשומות ביומן כחלק מייבוא של תו כללי לחיפוש. לדוגמה:

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

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

לחלופין, אפשר להשתמש בפעולות ייצוא ספציפיות. בדוגמה הזו מוצגים נתונים מובְנים שמצורפים ליומן כארגומנטים האחרונים:

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 של יומן הרישום מגובים על ידי 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

הפתרון המומלץ לרישום ביומן מפונקציה הוא להשתמש ב-SDK של ה-logger לפלטפורמה שלכם. ב-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, בממשק המשתמש של 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.

שימוש בממשק המשתמש של Cloud Logging

אפשר להציג יומנים של Cloud Functions בממשק המשתמש של Cloud Logging.

ניתוח יומנים

Cloud Logging מציע חבילה חזקה של כלים לניתוח יומנים, שבעזרתם תוכלו לעקוב אחרי Cloud Functions.

תרשימים והתראות

אחרי שיוצרים מדדים שמבוססים על יומנים כדי לעקוב אחרי הפונקציות, אפשר ליצור תרשימים והתראות על סמך המדדים האלה. לדוגמה, אפשר ליצור תרשים כדי להציג זמן אחזור חזותי לאורך זמן, או ליצור התראה שתודיע לכם אם מתרחשת שגיאה מסוימת לעיתים קרובות מדי.

במאמר יצירת תרשימים והתראות מוסבר איך משתמשים במדדים מבוססי יומנים בתרשימים ובמדיניות ההתראות.