Cómo escribir y visualizar registros


Los registros son una herramienta importante para depurar y supervisar el código. Cloud Functions te brinda la opción de usar su SDK de registrador, el Cloud Logging personalizado de Google o el estándar de objetos console para desarrollar para la Web.

Escribe registros

Aunque recomendamos el SDK del logger de Cloud Functions para la mayoría de las situaciones, puedes elegir otra opción en los siguientes casos:

  • Si tienes una base de código existente y prefieres no refactorizar desde console.log.
  • Si estás familiarizado con Cloud Logging (antes StackDriver Logging) y prefieres usarlo para los registros personalizados

Usa el SDK del logger de Cloud Functions

El SDK de logger de Cloud Functions proporciona una interfaz estándar que tiene una API similar a las declaraciones console.log y es compatible con otros niveles de registro. Puedes usar este SDK para registrar eventos con datos estructurados y, así, simplificar la supervisión y el análisis.

El SDK de logger admite entradas de registro como parte de una importación de comodines. Por ejemplo:

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

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

También puedes usar exportaciones individuales. En este ejemplo se muestran los datos estructurados adjuntos al registro como el ú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'
});
  • Los comandos logger.log() tienen el nivel de registro INFO.
  • Los comandos logger.info() tienen el nivel de registro INFO.
  • Los comandos logger.warn() tienen el nivel de registro ADVERTENCIA.
  • Los comandos logger.error() tienen el nivel de registro ERROR.
  • Los mensajes internos del sistema tienen el nivel de registro DEBUG.

Con logger.write() puedes escribir entradas de registro, además de registrar los niveles de gravedad de CRITICAL, ALERT y EMERGENCY. Consulta LogSeverity.

Registros personalizados de Cloud Logging

Los registros de Cloud Functions con el SDK del logger están respaldados por Cloud Logging. Puedes usar la biblioteca Cloud Logging para Node.js a fin de registrar eventos con datos estructurados y simplificar la supervisión y el análisis.

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

Usa console.log

La solución recomendada para generar registros desde una función es usar el SDK de registrador para tu plataforma. Con Node.js, puedes usar llamadas de registro estándares de JavaScript, como console.log y console.error, pero primero necesitas un módulo especial para aplicar parches a los métodos estándar a fin de que funcionen correctamente:

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

Cuando hayas establecido el requisito de instalación del módulo de compatibilidad del logger, podrás usar los métodos console.log() como de costumbre en tu código:

exports.helloError = functions.https.onRequest((request, response) => {
  console.log('I am a log entry!');
  response.send('Hello World...');
});
  • Los comandos console.log() tienen el nivel de registro INFO.
  • Los comandos console.info() tienen el nivel de registro INFO.
  • Los comandos console.warn() tienen el nivel de registro ERROR.
  • Los comandos console.error() tienen el nivel de registro ERROR.
  • Los mensajes internos del sistema tienen el nivel de registro DEBUG.

Visualiza los registros

Los registros de Cloud Functions se pueden ver en la consola de Google Cloud, la IU de Cloud Logging o mediante la herramienta de línea de comandos de firebase.

Usa Firebase CLI

Para visualizar los registros con la herramienta de firebase, usa el comando functions:log:

firebase functions:log

Para visualizar los registros de una función específica, proporciona su nombre como argumento:

firebase functions:log --only <FUNCTION_NAME>

Para conocer todas las opciones de visualización de registros, consulta la ayuda de functions:log:

firebase help functions:log

Usa la consola de Google Cloud

Puedes ver los registros de las funciones en la consola de Google Cloud.

Usa la IU de Cloud Logging

Puedes ver los registros de Cloud Functions en la IU de Cloud Logging.

Analiza registros

Cloud Logging ofrece un conjunto sólido de herramientas de análisis de registros que puedes usar para supervisar tu Cloud Functions.

Gráficos y alertas

Una vez que crees métricas basadas en registros para supervisar tus funciones, puedes usarlas con el fin de crear gráficos y alertas. Por ejemplo, puedes crear un gráfico para visualizar la latencia a lo largo del tiempo o crear una alerta a fin de saber si un error se produce con mucha frecuencia.

Consulta Crea gráficos y alertas si necesitas información detallada para usar métricas basadas en registros en políticas de alertas y gráficos.