Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Registro

En esta guía, aprenderá a configurar un registrador en el controlador de Node.js. El controlador le permite registrar información clasificada según los siguientes niveles de gravedad:

  • emergency

  • alert

  • critical

  • error

  • warn

  • notice

  • info

  • debug

  • trace

  • off

La lista anterior está ordenada por orden de gravedad decreciente. La especificación de un nivel de gravedad también registra todos los mensajes con niveles de gravedad superiores. Por ejemplo, si se establece el nivel de registro en critical, también se obtendrán mensajes de registro con niveles de gravedad de emergency y alert.

Cuanto menor sea el nivel de gravedad que especifiques, más información registrará el controlador, lo que podría afectar el rendimiento de tu aplicación.

Puedes configurar el registro en el driver de Node.js sin cambiar el código especificando variables de entorno. También puedes configurar el registro programáticamente especificando las opciones del cliente en el constructor MongoClient.

Nota

Dado que las cadenas de conexión a menudo se comparten entre una implementación de diferentes aplicaciones que pueden tener soporte de registro diferente, no recomendamos utilizar una cadena de conexión para configurar el registro.

Puede configurar el registro para diferentes componentes del controlador especificando un nivel de gravedad en una o más de las siguientes variables de entorno:

  • MONGODB_LOG_ALL: Especifica la gravedad por defecto para cualquier componente no configurado

  • MONGODB_LOG_COMMAND:Registra todos los comandos enviados al servidor

  • MONGODB_LOG_TOPOLOGY: Registra cualquier cambio en la topología del clúster

  • MONGODB_LOG_SERVER_SELECTION: Registra el proceso de selección del servidor

  • MONGODB_LOG_CONNECTION: Registra todos los eventos del pool de conexiones

  • MONGODB_LOG_CLIENT: Registra todos los eventos del cliente

Si no especifica ninguna de las variables de entorno anteriores, el controlador utiliza el valor de MONGODB_LOG_ALL, que si no se especifica, se establece implícitamente en off.

Tip

El registro a nivel de comando es la opción de registro más intensiva en rendimiento debido a la frecuencia con la que se envían comandos al servidor. Especifique solo esta opción si es necesario para depurar su aplicación.

El siguiente ejemplo establece el nivel de registro para todos los componentes en debug excepto para MONGODB_LOG_COMMAND:

export MONGODB_LOG_ALL="debug"
export MONGODB_LOG_COMMAND="off"

Puedes especificar si el controlador registra en stderr o stdout configurando la variable de entorno MONGODB_LOG_PATH en "stderr" o "stdout", como se muestra en el siguiente ejemplo:

export MONGODB_LOG_PATH="stderr"

Por defecto, el controlador almacena registros en stderr.

El controlador transforma en strings los documentos registrados mediante EJSON, que limita las cadenas a 1000 caracteres por defecto. Puedes especificar una longitud máxima de documento para tu logger especificando la variable de entorno MONGODB_LOG_MAX_DOCUMENT. Establece esta variable a 0 para no realizar truncamiento.

El siguiente ejemplo establece la longitud máxima del documento en 500 caracteres:

export MONGODB_LOG_MAX_DOCUMENT_LENGTH=500

Puedes configurar el registro de forma programática especificando opciones de cliente en el constructor MongoClient. Como las opciones del cliente tienen prioridad sobre las variables de entorno, solo especifícalas en el cliente si ya no deseas que el controlador responda a variables de entorno.

Tip

Si tu aplicación depende del formato de stdout o stderr, te recomendamos que configures el registro utilizando las opciones del cliente para evitar conflictos con las variables de entorno de los usuarios de la aplicación.

Puede especificar para qué componente configurar el registro especificando una o más de las siguientes opciones de cliente:

  • default: Especifica la gravedad por defecto para cualquier componente no configurado

  • command:Registra todos los comandos enviados al servidor

  • topology: Registra cualquier cambio en la topología del clúster

  • serverSelection: Registra el proceso de selección del servidor

  • connection: Registra todos los eventos del pool de conexiones

  • client: Registra todos los eventos del cliente

Para especificar un nivel de registro para un componente, configura la opción mongodbLogComponentSeverities en un objeto que incluya el componente y tu nivel deseado de gravedad. El siguiente ejemplo configura el nivel de registro para todos los componentes a debug excepto para command:

const client = new MongoClient("<connection string>", {
mongodbLogComponentSeverities: {
default: "debug",
command: "off"
}
});

Puedes especificar si el controlador registra en stderr o stdout configurando la opción mongodbLogPath en "stderr" o "stdout", como se muestra en el siguiente ejemplo:

const mongodbLogComponentSeverities = {
default: "debug"
};
const mongodbLogPath = "stdout";
const client = new MongoClient("<connection string>",
{ mongodbLogComponentSeverities, mongodbLogPath }
);

Por defecto, el controlador almacena registros en stderr.

También puedes especificar un destino de registro personalizado. El siguiente ejemplo crea un destino de registro personalizado:

import fs from 'node:fs/promises';
import util from 'node:util';
const mongodbLogPath = {
file: await fs.open(`./server-${+new Date()}.logs`, 'w'),
async write(log) {
try {
await this.file?.appendFile(util.inspect(log) + '\n');
} catch (fileError) {
console.log('cannot log anymore', fileError);
this.file = null;
}
}
}
const client = new MongoClient("<connection string>", { mongodbLogPath });

Si su función genera un error en la operación de guardado, el error provocado finaliza el registrador. Por esta razón, recomendamos que manejes los errores haciendo que la función de guardar no realice ninguna operación en lugar de arrojar un error, como se muestra en el ejemplo anterior.

Nota

El registro puede agotar el espacio en disco si no se cuenta con el sistema de rotación de registros adecuado. Recomendamos conectar su función personalizada de guardado a una popular librería de registros.

El controlador convierte los documentos registrados en cadenas mediante EJSON, lo que limita las cadenas a 1000 caracteres por defecto. Puede especificar una longitud máxima de documento para su registrador con la opción mongodbLogMaxDocumentLength. Configure esta opción en 0 para no realizar truncamiento.

El siguiente ejemplo establece la longitud máxima del documento en 500 caracteres:

const mongodbLogComponentSeverities = {
default: "debug"
};
const mongodbLogLength = 500;
const client = new MongoClient("<connection string>", {
mongodbLogComponentSeverities,
mongodbLogLength
});

Para obtener más información sobre la supervisión con el driver Node.js, consulta el supervisión guide.

Para obtener más información sobre cualquiera de las opciones o tipos tratados en esta guía, consulte la siguiente documentación de la API:

  • MongoClientOptions

  • mongodbLogComponentSeverities

  • mongodbLogMaxDocumentLength

  • Ruta de registro de mongodb

Volver

Monitoring

En esta página