Gravar e consultar registros


O Logging é uma ferramenta importante para depurar e monitorar códigos. O Cloud Functions oferece a opção de usar o SDK do logger, o Cloud Logging personalizado do Google ou o padrão de objeto console para desenvolvimentos na Web.

Como gravar registros

Embora o SDK do logger do Cloud Functions seja recomendado para a maioria das situações, é possível escolher uma das outras opções por estes motivos:

  • Você já tem uma base de código e prefere não realizar a refatoração de console.log.
  • Você conhece o Cloud Logging (antigo Stackdriver Logging) e prefere usá-lo para a geração de registros personalizados.

Como usar o SDK do logger do Cloud Functions

O SDK do logger do Cloud Functions fornece uma interface padrão com uma API semelhante às instruções console.log e aceita outros níveis de registro. Você pode usar esse SDK para registrar eventos com dados estruturados, facilitando a análise e o monitoramento.

O SDK do logger é compatível com entradas de registro como parte de uma importação de caracteres curinga. Exemplo:

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

  functions.logger.log("Hello from info. Here's an object:", someObj);

Como alternativa, você pode usar exportações individuais. Confira neste exemplo dados estruturados anexados ao registro como o último argumento:

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'
});
  • Os comandos logger.log() têm o nível de registro INFO.
  • Os comandos logger.info() têm o nível de registro INFO.
  • Os comandos logger.warn() têm o nível de registro WARNING.
  • Os comandos logger.error() têm o nível de registro ERROR.
  • As mensagens internas do sistema têm o nível de registro DEBUG.

Com logger.write(), é possível gravar entradas e níveis de gravidade de registros de CRITICAL, ALERT e EMERGENCY. Consulte LogSeverity.

Registros personalizados do Cloud Logging

Os registros do Cloud Functions com o SDK do logger têm o suporte do Cloud Logging. Use a biblioteca do Cloud Logging para Node.js para registrar eventos com dados estruturados, o que facilita a análise e o monitoramento.

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);

Como usar o console.log

A solução recomendada para a geração de registros de uma função é usar o SDK do logger para a plataforma. Em vez disso, é possível usar chamadas de geração de registros padrão em JavaScript, como console.log e console.error. No entanto, primeiro é necessário exigir um módulo especial para corrigir os métodos padrão para que eles funcionem corretamente:

require("firebase-functions/logger/compat");

Depois de exigir o módulo de compatibilidade do logger, é possível usar os métodos console.log() normalmente no seu código:

exports.helloError = functions.https.onRequest((request, response) => {
  console.log('I am a log entry!');
  response.send('Hello World...');
});
  • Os comandos console.log() têm o nível de registro INFO.
  • Os comandos console.info() têm o nível de registro INFO.
  • Os comandos console.warn() têm o nível de registro ERROR.
  • Os comandos console.error() têm o nível de registro ERROR.
  • As mensagens internas do sistema têm o nível de registro DEBUG.

Como ver registros

Os registros do Cloud Functions podem ser visualizados no console do Google Cloud, na interface do Cloud Logging ou na ferramenta de linha de comando firebase.

Como usar a CLI do Firebase

Para consultar registros com a ferramenta firebase, use o comando functions:log:

firebase functions:log

Para consultar registros de uma função específica, forneça o nome da função como um argumento:

firebase functions:log --only <FUNCTION_NAME>

Para acessar todas as opções de visualização de registros, confira a ajuda sobre functions:log:

firebase help functions:log

Como usar o console do Google Cloud

É possível consultar os registros das funções no console do Google Cloud.

Como usar a interface do Cloud Logging

É possível acessar os registros do Cloud Functions na interface do Cloud Logging.

Como analisar registros

O Cloud Logging oferece um conjunto de ferramentas eficientes para análise de registros que podem ser usadas para monitorar o Cloud Functions.

Gráficos e alertas

Depois de ter criado métricas baseadas em registros para monitorar suas funções, você pode criar gráficos e alertas com base nessas métricas. Por exemplo, é possível criar um gráfico para visualizar a latência ao longo do tempo ou criar um alerta para saber se um determinado erro ocorre com muita frequência.

Consulte Criar gráficos e alertas para conferir informações detalhadas sobre como usar métricas com base em registros nos gráficos e políticas de alerta.