Запись и просмотр журналов


Ведение логов — важный инструмент отладки и мониторинга кода. 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 .

Диаграммы и оповещения

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

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