كتابة السجلّات وعرضها


يُعدّ التسجيل أداة مهمة لتصحيح أخطاء الرمز البرمجي ومراقبته. تمنحك خدمة Cloud Functions خيار استخدام حزمة تطوير البرامج (SDK) المخصّصة للمسجّلين من قِبل Google. Cloud Logging، أو معيار الكائن console للتطوير على الويب.

كتابة السجلات

على الرغم من أنّه يُنصح باستخدام حزمة SDK Cloud Functions لتسجيل البيانات في معظم الحالات، يمكنك اختيار أحد الخيارات الأخرى لأسباب التالية:

  • لديك قاعدة رمز برمجي حالية وتفضّل عدم إعادة صياغة الرمز من console.log.
  • إذا كنت على دراية بخدمة Cloud Logging (المعروفة سابقًا باسم تسجيل StackDriver) وتفضّل استخدامها لتسجيل مخصّص

استخدام حزمة SDK لتسجيل Cloud Functions

توفّر حزمة تطوير البرامج لتسجيل Cloud Functions واجهة قياسية تتضمّن واجهة برمجة تطبيقات مشابهة لبيانات 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() تحمل مستوى السجل WARNING.
  • تحتوي أوامر logger.error() على مستوى السجلّ ERROR.
  • تحتوي رسائل النظام الداخلية على مستوى السجلّ تصحيح أخطاء.

باستخدام 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 لتسجيل البيانات لنظام التشغيل. وباستخدام 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() مستوى السجلّ خطأ.
  • تحتوي أوامر console.error() على مستوى السجلّ ERROR.
  • تتضمّن رسائل النظام الداخلي مستوى السجلّ تصحيح الأخطاء.

عرض السجلّات

يمكن الاطّلاع على سجلات 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.

الرسومات البيانية والتنبيهات

بعد إنشاء مقاييس مستندة إلى السجلات لتتبُّع دوالّك، يمكنك إنشاء الرسوم البيانية والتنبيهات استنادًا إلى هذه المقاييس. على سبيل المثال، يمكنك إنشاء رسم بياني لعرض وقت الاستجابة بصريًا بمرور الوقت، أو إنشاء تنبيه لإعلامك إذا حدث خطأ معيّن بشكل متكرر جدًا.

راجِع إنشاء الرسوم البيانية والتنبيهات للحصول على معلومات تفصيلية حول كيفية استخدام المقاييس المستنِدة إلى السجلّات في الرسوم البيانية وسياسات التنبيه