Rastreamento e log de atividades
Nesta página
Visão geral
Neste guia, você pode aprender como usar o driver Rust para configurar o rastreamento e o registro para seu aplicativo. Rastreamento e registro são duas estruturas para observar seu aplicativo. O registro permite que você visualize um registro discreto e baseado em eventos das atividades do driver, enquanto o rastreamento fornece uma visualização contínua.
No driver Rust, as funcionalidades de rastreamento e registro não diferem muito. No entanto, quando você habilita o rastreamento, o driver emite mensagens em um formato mais estruturado, o que pode tornar mais conveniente para o seu aplicativo consumir mensagens de eventos programaticamente.
Rastreadores e registradores registram mensagens em um nível de gravidade ou verbosidade que você pode especificar. Ao habilitar um desses componentes em seu aplicativo, você pode receber informações sobre as atividades do seu aplicativo em diferentes níveis de detalhes.
Dica
Para saber mais sobre os níveis de gravidade de registro, consulte o verbete da Wikipedia sobre o padrão do Syslog para registro de mensagens.
Habilitar rastreamento e registro
O motorista implementa o rastreamento crate para permitir que o condutor emita mensagens para eventos de condutor.
Importante
A caixa de rastreamento é instável
Como a caixa tracing
não tem uma versão 1.0, você pode considerar que a funcionalidade é instável.
Para habilitar o rastreamento, o registro ou ambos, você deve adicionar a dependência tracing
e o sinalizador de feição tracing-unstable
à sua dependência mongodb
no arquivo Cargo.toml
:
[dependencies] tracing = "0.1.37" [dependencies.mongodb] version = "3.1.0" features = ["tracing-unstable"]
A tabela a seguir descreve os componentes contra os quais você pode emitir eventos e seus destinos correspondentes:
Componente | Alvo | Descrição |
---|---|---|
Comando | mongodb::command | O evento descreve os comandos enviados ao reconhecimento de data center e se eles são bem-sucedidos ou falham. |
Seleção do Servidor | mongodb::server_selection | Os eventos descrevem o processo do driver de selecionar um servidor em um MongoDB deployment. |
Conexão | mongodb::connection | Os eventos descrevem o comportamento dos pools de conexões do driver e as conexões que eles contêm. |
Para especificar o componente de registro e o nível de gravidade, você pode definir a variável de ambiente RUST_LOG
ao compilar e executar seu aplicativo. Especifique o componente de registro definindo o valor de RUST_LOG
para um dos destinos fornecidos na tabela anterior e incluindo um nível de gravidade.
O código abaixo mostra um comando para executar um programa que registra eventos de conexão no nível debug
:
$ RUST_LOG='mongodb::connection=debug' cargo run
As seções a seguir descrevem como consumir eventos usando rastreamento ou registro.
Implementar rastreamento
Para habilitar o rastreamento, você também deve adicionar a dependência do tracing-subscriber
ao seu arquivo do Cargo.toml
. O código a seguir mostra um exemplo de lista de dependências que contém as dependências do driver e a caixa tracing-subscriber
:
[dependencies] tracing = "0.1.37" tracing-subscriber = "0.3.17" [dependencies.mongodb] version = "3.1.0" features = ["tracing-unstable"]
Em seguida, no seu aplicativo, você deve registrar um tipo que implementa a tracing::Subscriber
para consumir eventos com rastreamento. O código a seguir mostra como registrar um assinante de rastreamento que usa as especificações da variável de ambiente RUST_LOG
:
tracing_subscriber::fmt::init();
Dica
Para saber mais sobre como registrar um assinante, consulte a tracing
documentação .
Se você executar seu aplicativo e rastrear os comandos no nível debug
, o driver emitirá mensagens sempre que você executar uma operação. O seguinte código mostra o comando para esta especificação de rastreamento:
$ RUST_LOG='mongodb::command=debug' cargo run
Com o rastreamento de nível debug
especificado, ao executar uma operação de gravação, o driver gera mensagens de rastreamento:
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 o registro, você também deve adicionar o sinalizador de feição log
ou log-always
à dependência tracing
no seu arquivo Cargo.toml
. Você também deve adicionar uma dependência para uma caixa de registro, como env_logger
:
[dependencies] tracing = { version = "0.1.37", features = ["log"] } env_logger = "0.10.0" [dependencies.mongodb] version = "3.1.0" features = ["tracing-unstable"]
Dica
Para saber mais sobre os log
log-always
sinalizadores tracing
e , consulte a documentação .
Para saber mais sobre a caixa de registro de terceiros env_logger
,consulte sua documentação.
Em seguida, em seu aplicativo, você deve registrar um logger global para consumir eventos com log. O seguinte código mostra como registrar um logger que utiliza as especificações da variável de ambiente RUST_LOG
:
env_logger::init();
Dica
Configurações de registro alternativas
Para ver exemplos de outras maneiras de configurar o registrador, visite o env_logger
Github repositório do .
Se você executar seu aplicativo e fizer registro de conexões no nível debug
, o driver emitirá mensagens sempre que você abrir, usar e fechar uma conexão. O seguinte código mostra o comando para esta especificação de registro:
$ RUST_LOG='mongodb::connection=debug' cargo run
Com o rastreamento de nível debug
especificado, quando você abre e usa uma conexão, o driver gera mensagens 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 ...
Informações adicionais
Para saber mais sobre como configurar as opções do cliente , consulte o guia sobre asopções de conexão .
Dica
Monitoramento
Além do registro, você pode habilitar o monitoramento em seu aplicativo. Para saber mais, consulte os guias de monitoramento .