Запись и просмотр журналов (1-го поколения)

Ведение логов — важный инструмент для отладки и мониторинга кода. Cloud Functions предоставляет возможность использовать собственный SDK для ведения логов, пользовательские инструменты Google Cloud Logging или стандартный объект console для веб-разработки.

Ведение журналов

Хотя для большинства ситуаций рекомендуется использовать SDK для ведения Cloud Functions , по следующим причинам вы можете выбрать один из других вариантов:

  • У вас уже есть кодовая база, и вы предпочитаете не проводить рефакторинг, начиная с console.log .
  • Вы знакомы с Cloud Logging (ранее StackDriver logging) и предпочитаете использовать его для создания пользовательских логов.

Использование 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 для логирования, поддерживаются 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 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 .

Графики и оповещения

После создания метрик на основе логов для мониторинга ваших функций вы можете создавать диаграммы и оповещения на основе этих метрик. Например, вы можете создать диаграмму для визуализации задержки во времени или создать оповещение, которое сообщит вам, если определенная ошибка возникает слишком часто.

Подробную информацию об использовании метрик на основе журналов в диаграммах и политиках оповещений см. в разделе «Создание диаграмм и оповещений» .