Escribir y ver registros


El registro es una herramienta importante para depurar y monitorear el código. Cloud Functions le ofrece la opción de utilizar su SDK de registrador, Google Cloud Logging personalizado o el estándar de objetos console para desarrollar para la web.

Registros de escritura

Si bien se recomienda el SDK del registrador de Cloud Functions para la mayoría de las situaciones, puede elegir una de las otras opciones por estos motivos:

  • Tiene una base de código existente y prefiere no refactorizar desde console.log .
  • Está familiarizado con Cloud Logging (anteriormente, registro de StackDriver) y prefiere usarlo para registros personalizados.

Uso del SDK del registrador de Cloud Functions

El SDK del registrador de Cloud Functions proporciona una interfaz estándar que tiene una API similar a las declaraciones console.log y admite otros niveles de registro. Puede utilizar este SDK para registrar eventos con datos estructurados , lo que permite un análisis y un seguimiento más sencillos.

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

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

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

Alternativamente, puede utilizar exportaciones individuales. Este ejemplo muestra datos estructurados adjuntos al registro como ú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 WARNING .
  • Los comandos logger.error() tienen el nivel de registro ERROR .
  • Los mensajes internos del sistema tienen el nivel de registro DEBUG .

Con logger.write() , puede escribir entradas de registro además de niveles de gravedad de registro de CRITICAL , ALERT y EMERGENCY . Consulte LogSeverity .

Registros personalizados de registro en la nube

Los registros de Cloud Functions con el SDK del registrador están respaldados por Cloud Logging . Puede utilizar la biblioteca Cloud Logging para Node.js para registrar eventos con datos estructurados, lo que permite un análisis y un seguimiento más sencillos.

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

La solución recomendada para iniciar sesión desde una función es utilizar el SDK del registrador para su plataforma. Con Node.js, puedes usar llamadas de registro de JavaScript estándar como console.log y console.error , pero primero necesitas un módulo especial para parchear los métodos estándar para que funcionen correctamente:

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

Una vez que haya requerido el módulo de compatibilidad del registrador, puede usar los métodos console.log() como de costumbre en su 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 .

Ver registros

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

Usando la CLI de Firebase

Para ver registros con la herramienta firebase , use el comando functions:log :

firebase functions:log

Para ver registros de una función específica, proporcione el nombre de la función como argumento:

firebase functions:log --only <FUNCTION_NAME>

Para conocer la gama completa de opciones de visualización de registros, consulte la ayuda de functions:log :

firebase help functions:log

Usando la consola de Google Cloud

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

Uso de la interfaz de usuario de registro en la nube

Puede ver registros de Cloud Functions en la interfaz de usuario de Cloud Logging.

Analizando registros

Cloud Logging ofrece un potente conjunto de herramientas de análisis de registros que puede utilizar para monitorear sus funciones en la nube.

Gráficos y alertas

Una vez que haya creado métricas basadas en registros para monitorear sus funciones, puede crear gráficos y alertas basadas en estas métricas. Por ejemplo, puede crear un gráfico para visualizar la latencia a lo largo del tiempo o crear una alerta para informarle si un determinado error ocurre con demasiada frecuencia.

Consulte Creación de gráficos y alertas para obtener información detallada sobre cómo utilizar métricas basadas en registros en gráficos y políticas de alertas.