ثبت وقایع (Logging) ابزاری مهم برای اشکالزدایی و نظارت بر کد است. Cloud Functions به شما این امکان را میدهد که از SDK ثبت وقایع آن، Google Cloud Logging سفارشی یا استاندارد شیء console برای توسعه وب استفاده کنید.
نوشتن گزارشها
اگرچه SDK ثبتکننده Cloud Functions برای اکثر موقعیتها توصیه میشود، اما میتوانید به دلایل زیر یکی از گزینههای دیگر را انتخاب کنید:
- شما یک کد بیس از قبل دارید و ترجیح میدهید که آن را از
console.logبازسازی نکنید. - شما با Cloud Logging (که قبلاً StackDriver logging نام داشت) آشنا هستید و ترجیح میدهید از آن برای ثبت وقایع سفارشی استفاده کنید.
استفاده از SDK ثبتکننده Cloud Functions
SDK ثبتکننده Cloud Functions logger SDK) یک رابط استاندارد ارائه میدهد که دارای API مشابه دستورات console.log است و از سایر سطوح ثبت وقایع پشتیبانی میکند. میتوانید از این SDK برای ثبت وقایع با دادههای ساختاریافته استفاده کنید و تجزیه و تحلیل و نظارت آسانتر را امکانپذیر سازید.
کیت توسعه نرمافزاری ثبتکنندهی لاگ (logger SDK) از ورودیهای لاگ به عنوان بخشی از یک ورودی wildcard پشتیبانی میکند. برای مثال:
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 مربوط به 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، میتوانید از فراخوانیهای استاندارد ثبت وقایع جاوا اسکریپت مانند console.log و console.error استفاده کنید، اما ابتدا باید یک ماژول ویژه برای اصلاح روشهای استاندارد برای عملکرد صحیح، درخواست دهید:
require("firebase-functions/logger/compat");
پس از اینکه ماژول سازگاری logger را درخواست کردید، میتوانید از متدهای 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 log) دارند. - دستورات
console.warn()دارای سطح گزارش خطا (ERROR) هستند. - دستورات
console.error()دارای سطح ثبت وقایع ERROR هستند. - پیامهای سیستم داخلی دارای سطح گزارش DEBUG هستند.
مشاهده گزارشها
گزارشهای مربوط به Cloud Functions یا در کنسول Google Cloud ، رابط کاربری Cloud Logging یا از طریق ابزار خط فرمان 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 خود از آنها استفاده کنید.
نمودارها و هشدارها
پس از ایجاد معیارهای مبتنی بر گزارشها برای نظارت بر عملکردهای خود، میتوانید نمودارها و هشدارهایی را بر اساس این معیارها ایجاد کنید. به عنوان مثال، میتوانید نموداری برای نمایش تأخیر در طول زمان ایجاد کنید، یا هشداری ایجاد کنید تا در صورت بروز مکرر یک خطای خاص، به شما اطلاع دهد.
برای اطلاعات دقیق در مورد نحوه استفاده از معیارهای مبتنی بر گزارشها در نمودارها و سیاستهای هشدار، به بخش ایجاد نمودارها و هشدارها مراجعه کنید.