Ведение журнала — важный инструмент для отладки и мониторинга кода. Cloud Functions предоставляет вам возможность использовать SDK для ведения журнала, пользовательское Google Cloud Logging или стандартный объект 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()
имеют уровень журнала 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 logger для вашей платформы. С 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
.
Использование Firebase CLI
Для просмотра журналов с помощью инструмента 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 .
Диаграммы и оповещения
После создания метрик на основе журналов для мониторинга ваших функций вы можете создавать диаграммы и оповещения на основе этих метрик. Например, вы можете создать диаграмму для визуализации задержки с течением времени или создать оповещение, чтобы сообщить вам, если определенная ошибка происходит слишком часто.
Подробную информацию об использовании показателей на основе журналов в диаграммах и политиках оповещений см. в разделе Создание диаграмм и оповещений .