يُعدّ التسجيل أداة مهمة لتصحيح أخطاء الرمز البرمجي ومراقبته.
تمنحك خدمة Cloud Functions خيار استخدام حزمة تطوير البرامج (SDK) المخصّصة للمسجّلين من قِبل Google.
Cloud Logging، أو معيار الكائن console
للتطوير على الويب.
كتابة السجلات
على الرغم من أنّه يُنصح باستخدام حزمة SDK Cloud Functions لتسجيل البيانات في معظم الحالات، يمكنك اختيار أحد الخيارات الأخرى للأسباب التالية:
- لديك قاعدة رمز برمجي حالية وتفضّل عدم إعادة صياغة الرمز من
console.log
. - إذا كنت على دراية بميزة Cloud Logging (المعروفة سابقًا باسم StackDriver،) وتفضّل لاستخدامه في التسجيل المخصص.
استخدام "حزمة تطوير البرامج (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()
مستوى السجلّ خطأ. - تحتوي رسائل النظام الداخلية على مستوى السجلّ تصحيح أخطاء.
باستخدام 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 إما فيconsole
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.
الرسومات البيانية والتنبيهات
بعد إنشاء مقاييس مستندة إلى السجلات لتتبُّع دوالّك، يمكنك إنشاء الرسوم البيانية والتنبيهات استنادًا إلى هذه المقاييس. على سبيل المثال، يمكنك إنشاء رسم بياني لعرض وقت الاستجابة بمرور الوقت أو إنشاء تنبيه لإعلامك في حال حدوث خطأ معين كثيرًا.
اطّلِع على مقالة إنشاء الرسوم البيانية والتنبيهات للحصول على معلومات مفصّلة عن كيفية استخدام المقاييس المستندة إلى السجلات في الرسوم البيانية وسياسات التنبيهات.