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.