Overview
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.
Habilitar seguimiento y registro
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 |
| Los eventos describen los comandos enviados a la base de datos y si tienen éxito o fallan. |
Selección de servidor |
| Los eventos describen el proceso del controlador para seleccionar un servidor en una implementación de MongoDB. |
Conexión |
| 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.
Implementar seguimiento
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
Implementar registro
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 ...
Información Adicional
Para obtener más información sobre cómo configurar las opciones del cliente, consulte la guía en Opciones de conexión.