Menu Docs
Página inicial do Docs
/ / /
Driver Rust
/

Rastreamento e log de atividades

Nesta página

  • Visão geral
  • Habilitar rastreamento e registro
  • Implementar rastreamento
  • Implementar registro
  • Informações adicionais

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.

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.

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

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

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 .

Voltar

Coleções de Time Series