كتابة السجلات وعرضها (الجيل الأول)

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

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

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

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

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

توفر حزمة SDK لتسجيل الأحداث 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.
  • تتضمّن رسائل النظام الداخلية مستوى السجلّ 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 لتسجيل الأحداث على منصتك. باستخدام 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 Console، أو واجهة مستخدم Cloud Logging، أو من خلال أداة سطر الأوامر firebase.

استخدام Firebase CLI

لعرض السجلات باستخدام أداة firebase، استخدِم الأمر functions:log:

firebase functions:log

لعرض سجلات دالّة معيّنة، قدِّم اسم الدالّة كحجة:

firebase functions:log --only <FUNCTION_NAME>

للاطّلاع على النطاق الكامل لخيارات عرض السجلّ، يُرجى الاطّلاع على تعليمات functions:log:

firebase help functions:log

استخدام ConsoleGoogle Cloud

يمكنك عرض سجلات الدوال في الـ Google Cloud console.

استخدام واجهة مستخدم Cloud Logging

يمكنك عرض سجلات Cloud Functions في واجهة المستخدم Cloud Logging.

تحليل السجلات

Cloud Logging توفّر مجموعة فعّالة من أدوات تحليل السجلات التي يمكنك استخدامها لمراقبة Cloud Functions.

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

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

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