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

Gravar e visualizar logs

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

O registro em log é uma ferramenta importante para depuração e monitoramento de código. O Cloud Functions oferece a opção de usar o SDK do logger, o Google Cloud Logging personalizado ou o padrão de objeto do console para desenvolvimento para a Web.

Gravando registros

Embora o SDK do registrador do Cloud Functions seja recomendado para a maioria das situações, você pode escolher uma das outras opções pelos seguintes motivos:

  • Você tem uma base de código existente e prefere não refatorar do console.log .
  • Você está familiarizado com o Cloud Logging (antigo StackDriver logging) e prefere usá-lo para o registro personalizado.

Como usar o SDK do registrador do Cloud Functions

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

O SDK do logger oferece suporte a entradas de log como parte de uma importação curinga. Por exemplo:

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

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

Como alternativa, você pode usar exportações individuais. Este exemplo demonstra dados estruturados anexados ao log 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 log INFO .
  • Os comandos logger.info() têm o nível de log INFO .
  • Os comandos logger.warn() têm o nível de log ERROR .
  • Os comandos logger.error() têm o nível de log ERROR .
  • As mensagens internas do sistema têm o nível de log DEBUG .

Com logger.write() , você pode gravar entradas de log além de níveis de gravidade de log de CRITICAL , ALERT e EMERGENCY . Consulte LogSeverity .

Registros personalizados do Cloud Logging

Os registros do Cloud Functions com o SDK do logger são apoiados pelo Cloud Logging . Você pode usar a biblioteca do Cloud Logging para Node.js para registrar eventos com dados estruturados, facilitando 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);

Usando console.log

A solução recomendada para log de uma função é usar o logger SDK . Em vez disso, você pode usar chamadas de log JavaScript padrão, como console.log e console.error , mas primeiro você precisa exigir um módulo especial para corrigir os métodos padrão para funcionar corretamente:

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

Depois de solicitar o módulo de compatibilidade do logger, você pode usar os métodos console.log() normalmente em 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 log INFO .
  • Os comandos console.info() têm o nível de log INFO .
  • Os comandos console.warn() têm o nível de log ERROR .
  • Os comandos console.error() têm o nível de log ERROR .
  • As mensagens internas do sistema têm o nível de log DEBUG .

Como visualizar registros

Os registros do Cloud Functions podem ser visualizados no Console do Google Cloud , na IU do Cloud Logging ou por meio da ferramenta de linha de comando do firebase .

Como usar a CLI do Firebase

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

firebase functions:log

Para visualizar os logs de uma função específica, forneça o nome da função como argumento:

firebase functions:log --only <FUNCTION_NAME>

Para a gama completa de opções de visualização de log, veja a ajuda de functions:log :

firebase help functions:log

Como usar o Console do Google Cloud

Você pode visualizar os registros de funções no Console do Google Cloud .

Como usar a IU do Cloud Logging

Você pode ver os registros do Cloud Functions na IU do Cloud Logging.

Analisando registros

O Cloud Logging oferece um conjunto avançado de ferramentas de análise de registros que você pode usar para monitorar o Cloud Functions. Essas ferramentas são especialmente poderosas quando combinadas com o registro personalizado .

Métricas com base em registros

Na IU do Cloud Logging, use o campo de filtro avançado para restringir o escopo do registro à função que você deseja analisar e clique em Enviar filtro para filtrar os registros. Por exemplo, você pode analisar apenas os logs de uma única função:

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

Se você registrou eventos com payloads JSON personalizados, poderá filtrar usando as chaves e os valores fornecidos:

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

Depois de filtrar os logs, você pode analisá-los usando métricas baseadas em logs . Clique no botão Criar Métrica para abrir o editor de métricas e selecione um tipo de métrica:

  • Métricas do contador: conte o número de entradas de log que correspondem a um filtro. Por exemplo, você pode contar o número de vezes que um determinado evento ocorre.
  • Métricas de distribuição: acumule dados numéricos de entradas de log que correspondem a um filtro. Por exemplo, você pode rastrear as latências de certas operações em suas funções.

Para logs baseados em texto, como os resultantes de console.log() em suas funções, você pode extrair valores e rótulos do campo textPayload usando expressões regulares. Para logs personalizados com dados estruturados, você pode acessar diretamente os dados no campo jsonPayload .

Gráficos e alertas

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

Consulte Criando gráficos e alertas para obter informações detalhadas sobre como usar métricas baseadas em logs em gráficos e políticas de alerta.