Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

Escribe y visualiza 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 logger, los registros personalizados de Google Cloud Logging o el estándar del objeto console a fin de desarrollar para la Web.

Escribe registros

Aunque recomendamos el SDK de 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 reestructurar desde console.log.
  • Si estás familiarizado con Cloud Logging (antes Stackdriver Logging) y prefieres usarlo para los registros personalizados.

Usa el SDK de 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");

  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/lib/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 ERROR.
  • 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 creados con el SDK de logger usan la tecnología de Cloud Logging. Puedes usar la biblioteca de 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 logger. En su lugar, 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/lib/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

Puedes ver los registros de Cloud Functions en Firebase console, 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 Firebase console

Puedes ver registros de Cloud Functions en Firebase console.

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 tus Cloud Functions. Estas herramientas son especialmente útiles cuando se emplean con registros personalizados.

Métricas basadas en registros

Usa el campo de filtro avanzado en la IU de Cloud Logging para limitar el alcance de los registros a la función que quieres analizar y, luego, haz clic en Enviar filtro para filtrar los registros. Por ejemplo, puedes analizar los registros de una sola función de la siguiente manera:

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

Si registraste eventos con cargas útiles personalizadas de JSON, puedes filtrar los registros con las claves y los valores que proporcionaste:

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

Una vez que filtres los registros, podrás analizarlos con las métricas basadas en registros. Haz clic en el botón Crear métrica para abrir el editor y seleccionar un tipo de métrica:

  • Las métricas de contadores cuentan la cantidad de entradas de registros que coinciden con un filtro. Por ejemplo, puedes contar la cantidad de veces que ocurre cierto evento.
  • Las métricas de distribución acumulan datos numéricos de entradas de registros que coinciden con un filtro. Por ejemplo, podrías realizar el seguimiento de las latencias de ciertas operaciones de tus funciones.

En el caso de los registros basados en texto, como los que se generan mediante console.log() en las funciones, puedes usar expresiones regulares para extraer valores y etiquetas del campo textPayload. En el caso de los registros personalizados que incluyen datos estructurados, puedes acceder directamente a los datos almacenados en el campo jsonPayload.

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.