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

Porque el tracing Si el cajón no tiene una versión de lanzamiento 1.0, puede considerar que la funcionalidad es inestable.

Para habilitar el seguimiento, el registro o ambos, debe agregar la dependencia tracing y el indicador de función tracing-unstable a su dependencia mongodb en su archivo Cargo.toml:

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

La siguiente tabla describe los componentes contra los cuales puedes emitir eventos y sus destinos correspondientes:

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 servidor

mongodb::server_selection

Los eventos describen el proceso del controlador para 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, puede configurar la variable de entorno RUST_LOG al compilar y ejecutar la aplicación. Para especificar el componente de registro, configure el valor RUST_LOG en uno de los valores indicados en la tabla anterior e incluya 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 mediante 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.1"
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

Con el seguimiento de nivel debug especificado, cuando realiza una operación de escritura, el controlador genera mensajes de seguimiento:

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 debe agregar la función log o log-always a la dependencia tracing en su archivo Cargo.toml. También debe agregar una dependencia para un contenedor de registro, como env_logger:

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

Tip

Para obtener más información sobre los log log-always indicadores y, consulte la tracing documentación de.

Para obtener más información sobre el contenedor de registro de env_logger terceros,consulte su documentación.

Luego, en su aplicación, debe registrar un registrador global para consumir eventos con registro. El siguiente código muestra cómo registrar un registrador 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, visite 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