Registro em aplicações Rust: melhores práticas para iniciantes

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução ao registro em Rust



Registro (logging) é o processo de gravar informações sobre a execução de um programa. Para desenvolvedores iniciantes em Rust, o registro pode parecer algo complexo, mas na verdade é uma das ferramentas mais poderosas para depuração e monitoramento. Neste artigo, abordaremos as melhores práticas de registro em Rust que ajudarão você a escrever aplicações mais confiáveis e sustentáveis.



Por que o registro é tão importante? Imagine que sua aplicação falhe inesperadamente em produção. Sem logs, você ficará completamente no escuro — terá que adivinhar o que deu errado. Com o registro configurado corretamente, você poderá encontrar e corrigir o erro rapidamente. No Rust, o ecossistema de registro é construído sobre crates poderosas e flexíveis que veremos hoje.



1. Fundamentos do registro: a crate log



Em Rust, o padrão de facto para registro é a crate log. Ela fornece uma interface abstrata que não depende de uma implementação específica. Isso significa que você pode escrever código usando as macros do log e depois alternar entre diferentes backends (por exemplo, env_logger, log4rs ou slog) sem alterar o código principal.



Instalação e configuração



Adicione a dependência ao seu Cargo.toml:



[dependencies]log = "0.4"env_logger = "0.10"


Agora você pode usar as macros de registro no seu código. Aqui está um exemplo simples:



use log::{info, warn, error};

fn main() { // Inicializamos o logger env_logger::init();

let user = "Alexey"; let age = 25;

info!("Aplicação iniciada"); warn!("Usuário {} tem idade {}, verifique os dados", user, age); error!("Não foi possível conectar ao banco de dados");

println!("Programa finalizado");}


Importante: sem chamar env_logger::init(), as macros do log não exibirão nada. A inicialização deve ocorrer uma vez, no início do programa.



Níveis de registro



A crate log suporta cinco níveis de registro (do mais importante ao menos importante):



  • error! — erros críticos que exigem atenção imediata. Use para situações em que o programa não pode continuar.
  • warn! — avisos. Algo deu errado, mas o programa pode continuar (por exemplo, API obsoleta ou valor inesperado).
  • info! — informações gerais sobre o progresso do programa. Útil para rastrear eventos-chave (inicialização, finalização, transições importantes).
  • debug! — informações de depuração. Usado durante o desenvolvimento para análise detalhada.
  • trace! — o nível mais detalhado. Registra cada passo da execução. Use com cuidado — pode poluir muito a saída.


A filtragem por nível ocorre automaticamente. Por padrão, o env_logger exibe todas as mensagens com nível error, warn e info. Você pode alterar isso facilmente usando a variável de ambiente RUST_LOG:



# Mostrar apenas errosRUST_LOG=error cargo run

# Mostrar tudo, incluindo traceRUST_LOG=trace cargo run

# Mostrar apenas para um módulo específicoRUST_LOG=my_module=debug cargo run


2. Registro prático: logs estruturados



Registro simples de strings é bom, mas para sistemas de produção é melhor usar logs estruturados. Em vez de escrever "Usuário Alexey entrou no sistema", você pode gravar um objeto JSON com campos event, user, timestamp. Isso simplifica a análise de logs com ferramentas como Elasticsearch ou Grafana.



Uso

Blogs

Book Recommendations