Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

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

Оптимизируйте свои подборки Сохраняйте и классифицируйте контент в соответствии со своими настройками.

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

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

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

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

Использование SDK регистратора Cloud Functions

SDK средства ведения журнала Cloud Functions предоставляет стандартный интерфейс, аналогичный операторам API для console.log и поддерживающий другие уровни журналов. Вы можете использовать этот SDK для регистрации событий со структурированными данными , что упрощает анализ и мониторинг.

SDK средства ведения журнала поддерживает записи журнала как часть импорта подстановочных знаков. Например:

  const functions = require("firebase-functions");

  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() имеют уровень журнала ERROR .
  • logger.error() имеют уровень журнала ERROR .
  • Внутренние системные сообщения имеют уровень журнала DEBUG .

С помощью logger.write() вы можете записывать записи в журнал, добавляя уровни серьезности журнала CRITICAL , ALERT и EMERGENCY . См. LogSeverity .

Пользовательские журналы облачного ведения журналов

Журналы Cloud Functions с SDK регистратора поддерживаются 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 средства ведения журнала. Вместо этого вы можете использовать стандартные вызовы ведения журнала 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 .

Просмотр журналов

Журналы для облачных функций можно просматривать либо в Google Cloud Console , пользовательском интерфейсе облачного ведения журналов, либо с помощью инструмента командной строки firebase .

Использование интерфейса командной строки Firebase

Чтобы просмотреть журналы с помощью инструмента firebase , используйте команду functions:log :

firebase functions:log

Чтобы просмотреть журналы для определенной функции, укажите имя функции в качестве аргумента:

firebase functions:log --only <FUNCTION_NAME>

Полный набор параметров просмотра журнала см. в справке для functions:log :

firebase help functions:log

Использование облачной консоли Google

Вы можете просматривать журналы для функций в Google Cloud Console .

Использование пользовательского интерфейса облачного ведения журнала

Вы можете просматривать журналы для Cloud Functions в пользовательском интерфейсе Cloud Logging.

Анализ журналов

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

Метрики на основе журналов

В пользовательском интерфейсе Cloud Logging используйте поле расширенного фильтра, чтобы сузить область журнала до функции, которую вы хотите проанализировать, затем нажмите « Отправить фильтр », чтобы отфильтровать журналы. Например, вы можете анализировать только логи одной функции:

resource.type="cloud_function"
resource.labels.function_name="myCloudFunction"
resource.labels.region="us-central1"

Если вы регистрировали события с пользовательскими полезными данными JSON, вы можете фильтровать их с помощью предоставленных ключей и значений:

resource.type="cloud_function"
resource.labels.function_name="CustomMetrics"
jsonPayload.event="my-event"

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

  • Метрики счетчика: подсчитайте количество записей журнала, соответствующих фильтру. Например, вы можете подсчитать, сколько раз происходит определенное событие.
  • Метрики распределения: накапливайте числовые данные из записей журнала, соответствующих фильтру. Например, вы можете отслеживать задержки определенных операций в своих функциях.

Для текстовых журналов, таких как журналы, полученные с console.log() в ваших функциях, вы можете извлекать значения и метки из поля textPayload с помощью регулярных выражений. Для пользовательских журналов со структурированными данными вы можете получить прямой доступ к данным в поле jsonPayload .

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

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

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