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


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

יומני כתיבה

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

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

באמצעות ה-SDK של יומן הרישום Cloud Functions

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

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

  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() יש רמת יומן אזהרה.
  • לפקודות logger.error() יש את רמת היומן ERROR.
  • הודעות מערכת פנימיות הן ברמת יומן DEBUG.

בעזרת logger.write(), אפשר לכתוב רשומות ביומן ברמות חומרה נוספות של CRITICAL,‏ ALERT ו-EMERGENCY. פרטים נוספים זמינים בקטע LogSeverity.

יומני Cloud Logging בהתאמה אישית

יומני Cloud Functions עם ה-SDK של ה-logger מגובים על ידי 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 של יומן הרישום במיוחד לפלטפורמה שלכם. ב-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.

באמצעות ה-CLI של Firebase

כדי לצפות ביומנים באמצעות הכלי 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.

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

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

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