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

Escribir y ver registros

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

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

Escribir registros

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 StackDriver logging) y prefiere usarlo para el registro personalizado.

Usar el 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 de console.log y admite otros niveles de registro. Puede usar este SDK para registrar eventos con datos estructurados , lo que facilita el análisis y la supervisión.

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

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

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

Como alternativa, 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 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() , puede escribir entradas de registro además de niveles de gravedad de registro de CRITICAL , ALERT y EMERGENCY . Ver LogSeverity .

Registros personalizados de Cloud Logging

Los registros de Cloud Functions con el SDK del registrador están respaldados por Cloud Logging . Puede usar la biblioteca de Cloud Logging para Node.js a fin de registrar eventos con datos estructurados, lo que facilita el análisis y la supervisión.

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 usar el registrador SDK . En su lugar, puede usar llamadas de registro de JavaScript estándar como console.log y console.error , pero primero debe requerir 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 Google Cloud Console , en la interfaz de usuario de Cloud Logging o a través de la herramienta de línea de comandos de firebase .

Uso de la CLI de Firebase

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

firebase functions:log

Para ver los 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

Uso de la consola de la nube de Google

Puede ver los registros de las funciones en Google Cloud Console .

Uso de la interfaz de usuario de Cloud Logging

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

Análisis de registros

Cloud Logging ofrece un poderoso conjunto de herramientas de análisis de registros que puede usar para monitorear sus funciones en la nube. Estas herramientas son especialmente poderosas cuando se combinan con registros personalizados .

Métricas basadas en registros

En la interfaz de usuario de Cloud Logging, use el campo de filtro avanzado para restringir el alcance del registro a la función que desea analizar, luego haga clic en Enviar filtro para filtrar los registros. Por ejemplo, podría analizar solo los registros de una sola función:

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

Si registró eventos con cargas JSON personalizadas, puede filtrar usando las claves y los valores que proporcionó:

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

Una vez que haya filtrado los registros, puede analizarlos mediante métricas basadas en registros . Haga clic en el botón Crear métrica para abrir el editor de métricas y seleccione un tipo de métrica:

  • Métricas de contador: cuenta el número de entradas de registro que coinciden con un filtro. Por ejemplo, podría contar la cantidad de veces que ocurre un determinado evento.
  • Métricas de distribución: acumule datos numéricos de entradas de registro que coincidan con un filtro. Por ejemplo, podría rastrear las latencias de ciertas operaciones dentro de sus funciones.

Para registros basados ​​en texto, como los que resultan de console.log() en sus funciones, puede extraer valores y etiquetas del campo textPayload usando expresiones regulares. Para registros personalizados con datos estructurados, puede acceder directamente a los datos en el campo jsonPayload .

Gráficos y alertas

Una vez que haya creado métricas basadas en registros para monitorear sus funciones, puede crear gráficos y alertas basados ​​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 saber si un determinado error ocurre con demasiada frecuencia.

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