Ведение журнала — важный инструмент для отладки и мониторинга кода. 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()
имеют уровень журнала ПРЕДУПРЕЖДЕНИЕ . - Команды
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 , в пользовательском интерфейсе Cloud Logging , либо с помощью инструмента командной строки firebase
.
Использование интерфейса командной строки 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 .
Графики и оповещения
После того как вы создали метрики на основе журналов для мониторинга своих функций, вы можете создавать диаграммы и оповещения на основе этих метрик. Например, вы можете создать диаграмму для визуализации задержки с течением времени или создать оповещение, сообщающее, если определенная ошибка возникает слишком часто.
Подробную информацию о том, как использовать метрики на основе журналов в диаграммах и политиках оповещений, см. в разделе «Создание диаграмм и оповещений» .