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
/ /

Rastreo y registro

En esta guía, aprenderá a usar el controlador de Rust para configurar el seguimiento y el registro de su aplicación. El seguimiento y el registro son dos marcos para supervisar su aplicación. El registro le permite ver un registro discreto basado en eventos de las actividades del controlador, mientras que el seguimiento proporciona una vista continua.

En el controlador de Rust, las funciones de seguimiento y registro no difieren mucho. Sin embargo, al habilitar el seguimiento, el controlador emite mensajes en un formato más estructurado, lo que facilita que la aplicación consuma mensajes de eventos mediante programación.

Los rastreadores y registradores registran los mensajes con un nivel de severidad o nivel de detalle que usted puede especificar. Al habilitar uno de estos componentes en su aplicación, puede recibir información sobre las actividades de su aplicación con diferentes niveles de detalle.

Tip

Para aprender más sobre los niveles de gravedad del registro, consulte la entrada de Wikipedia sobre el Estándar Syslog para el registro de mensajes.

El controlador implementa la caja de seguimiento para permitirle emitir mensajes para eventos del controlador.

Importante

El caja de tracing es inestable

Debido a que el tracing La caja no tiene una versión 1.0 publicada, puedes considerar que la funcionalidad es inestable.

Para habilitar el rastreo, el registro o ambos, debes agregar la dependencia tracing y la bandera de funcionalidad tracing-unstable a tu dependencia mongodb en tu archivo Cargo.toml:

[dependencies]
tracing = "0.1.37"
[dependencies.mongodb]
version = "3.5.2"
features = ["tracing-unstable"]

La siguiente tabla describe los componentes sobre los que puedes enviar eventos y sus respectivos objetivos:

Componente
Objetivo
Descripción

Comando

mongodb::command

Los eventos describen los comandos enviados a la base de datos y si tienen éxito o fallan.

Selección de servidores

mongodb::server_selection

Los eventos describen el proceso del controlador de seleccionar un servidor en una implementación de MongoDB.

Conexión

mongodb::connection

Los eventos describen el comportamiento de los pools de conexiones del driver y las conexiones que contienen.

Para especificar el componente de registro y el nivel de gravedad, puedes establecer la variable de entorno RUST_LOG cuando compiles y ejecutes tu aplicación. Especifique el componente de registros configurando el valor de RUST_LOG en uno de los destinos proporcionados en la tabla anterior e incluyendo un nivel de gravedad.

El siguiente código muestra un comando para ejecutar un programa que registra eventos de conexión en el nivel debug:

$ RUST_LOG='mongodb::connection=debug' cargo run

Las siguientes secciones describen cómo consumir eventos utilizando ya sea seguimiento o registro.

Para habilitar el rastreo, también debes agregar la dependencia tracing-subscriber a tu archivo Cargo.toml. El siguiente código muestra una lista de dependencias de muestra que contiene las dependencias del driver y la caja tracing-subscriber:

[dependencies]
tracing = "0.1.37"
tracing-subscriber = "0.3.17"
[dependencies.mongodb]
version = "3.5.2"
features = ["tracing-unstable"]

Luego, en tu aplicación, debes registrar un tipo que implemente el rasgo tracing::Subscriber para consumir eventos con rastreo. El siguiente código muestra cómo registrar un suscriptor de trazabilidad que utiliza las especificaciones de la variable de entorno RUST_LOG:

tracing_subscriber::fmt::init();

Tip

Para obtener más información sobre la inscripción de un suscriptor, consulta la documentaciónde tracing.

Si ejecutas tu aplicación y rastreas los comandos a nivel de debug, el controlador emite mensajes cada vez que ejecutas una operación. El siguiente código muestra el comando para esta especificación de rastreo:

$ RUST_LOG='mongodb::command=debug' cargo run

Al especificar la trazabilidad de nivel debug, al realizar una operación de escritura, el driver genera mensajes de traza:

let my_coll = client.database("db").collection("test_coll");
my_coll.insert_one(doc! { "x" : 1 }).await?;
2023-07-21T17:37:13.587794Z DEBUG mongodb::command: Command started topologyId="..." command="{\"insert\":\"test_coll\", ...}" databaseName="test" commandName="insert" requestId=12 driverConnectionId=1 serverConnectionId=133839 serverHost="..." serverPort=27017
2023-07-21T17:37:13.630401Z DEBUG mongodb::command: Command succeeded topologyId="..." reply="{\"n\":1, ...}" commandName="insert" requestId=12 driverConnectionId=1 serverConnectionId=133839 serverHost="..." serverPort=27017 durationMS=42

Para habilitar el registro, también debes añadir el indicador de funcionalidad log o log-always a la dependencia tracing en tu archivo Cargo.toml. También debe añadir una dependencia para una caja de registro, como env_logger:

[dependencies]
tracing = { version = "0.1.37", features = ["log"] }
env_logger = "0.10.0"
[dependencies.mongodb]
version = "3.5.2"
features = ["tracing-unstable"]

Tip

Para obtener más información sobre las banderas log y log-always, consulta la tracing documentación.

Para obtener más información sobre la caja de registro de terceros env_logger, consulta su documentación.

Luego, en su aplicación, debe registrar un registrador global para consumir eventos con registro de eventos. El siguiente código muestra cómo registrar un logger que utiliza las especificaciones de la variable de entorno RUST_LOG:

env_logger::init();

Tip

Configuraciones de registro alternativas

Para ver ejemplos de otras formas de configurar el registrador, visita el env_logger repositorio de GitHub.

Si ejecutas tu aplicación y el registro contra conexiones en el nivel debug, el controlador emite mensajes cada vez que abres, usas y cierras una conexión. El siguiente código muestra el comando para esta especificación de registro:

$ RUST_LOG='mongodb::connection=debug' cargo run

Con la trazabilidad al nivel debug especificada, cuando abres y utilizas una conexión, el controlador genera mensajes de registro:

let my_coll = client.database("db").collection("test_coll");
my_coll.insert_one(doc! { "x" : 1 }).await?;
[2023-07-21T18:13:00Z DEBUG mongodb::connection] Connection pool created topologyId="..." serverHost="..." serverPort=27017
[2023-07-21T18:13:00Z DEBUG mongodb::connection] Connection pool created topologyId="..." serverHost="..." serverPort=27017
[2023-07-21T18:13:00Z DEBUG mongodb::connection] Connection pool created topologyId="..." serverHost="..." serverPort=27017
[2023-07-21T18:13:00Z DEBUG mongodb::connection] Connection pool ready topologyId="..." serverHost="..." serverPort=27017
[2023-07-21T18:13:00Z DEBUG mongodb::connection] Connection checkout started topologyId="..." serverHost="..." serverPort=27017
[2023-07-21T18:13:00Z DEBUG mongodb::connection] Connection created topologyId="..." serverHost="..." serverPort=27017 driverConnectionId=1
...

Para obtener más información sobre cómo configurar las opciones del cliente, consulte la guía en Opciones de conexión.

Tip

Monitoring

Además del registro, puedes habilitar la monitorización en tu aplicación. Para obtener más información, consulta las guías de la sección "Monitorización".

Volver

Colecciones de series de tiempo

En esta página