Registro em Rust: visão geral das melhores bibliotecas e soluções

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

Registro para Rust: melhores bibliotecas e ferramentas



O registro é uma parte essencial do desenvolvimento de qualquer aplicação séria. No ecossistema Rust, existem várias soluções maduras que permitem gerenciar flexivelmente a saída de mensagens, definir níveis de importância e formatos. Neste artigo, veremos as bibliotecas mais populares para registro em Rust, suas características e daremos exemplos de uso.



1. Trait base log



A biblioteca log (crate log) é a base para todos os sistemas de registro em Rust. Ela fornece o trait abstrato Log e macros (info!, warn!, error!, debug!, trace!). Por si só, ela não gera saída de dados — para isso, é necessária uma implementação (backend).



// Cargo.toml// [dependencies]// log = "0.4"

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

fn main() { info!("Aplicação iniciada"); warn!("Baixa memória disponível: {} MB", 128); error!("Erro ao conectar ao banco de dados");}


Níveis de registro em ordem crescente de importância: trace, debug, info, warn, error. Por padrão, apenas mensagens de nível info e superiores são exibidas.



2. env_logger — escolha simples e popular



env_logger é a implementação mais comum do trait Log. Ela é configurada através da variável de ambiente RUST_LOG e exibe mensagens no fluxo de erro padrão (stderr).



// Cargo.toml// [dependencies]// log = "0.4"// env_logger = "0.10"

use log::info;

fn main() { env_logger::init(); info!("env_logger inicializado");}

// Execução: RUST_LOG=info cargo run


Características:

  • Configuração mínima — apenas uma linha env_logger::init() é suficiente.
  • Filtragem por módulos: RUST_LOG=my_crate=debug,other_crate=info.
  • Suporte a saída colorida no terminal.
  • Ideal para pequenas utilidades e protótipos.


3. log4rs — alternativa configurável ao log4j/log4net



log4rs (crate log4rs) é um framework poderoso, inspirado no Java log4j. Permite configurar o registro através de arquivos YAML/JSON/TOML ou programaticamente.



// Cargo.toml// [dependencies]// log = "0.4"// log4rs = "1.2"

use log::info;

fn main() { // Configuração programática log4rs::init_file("log4rs.yaml", Default::default()).unwrap(); info!("log4rs configurado via arquivo");}

// log4rs.yaml// refresh_rate: 30 seconds// appenders:// stdout:// kind: console// encoder:// pattern: "{d(%Y-%m-%d %H:%M:%S)} {l} - {m}{n}"// file:// kind: file// path: "app.log"// encoder:// pattern: "{d} {l} {t} - {m}{n}"// root:// level: info// appenders:// - stdout// - file


Características:

  • Suporte a múltiplos appenders (saída para arquivo, console, syslog, network).
  • Rotação automática de logs por tamanho ou tempo.
  • Filtragem por módulos, níveis, filtros personalizados.
  • Recomendado para aplicações servidoras e microsserviços.


4. tracing — registro assíncrono e estruturado



tracing (crate tracing) é uma alternativa moderna, desenvolvida pela equipe Tokio. Ela suporta eventos estruturados, spans para rastreamento de tempo de execução e contextos assíncronos.



// Cargo.toml// [dependencies]// tracing = "0.1"// tracing-subscriber = "0.3"

use tracing::{info, span, Level};use tracing_subscriber::fmt;

fn main() { // Inicialização do subscriber fmt::init();

let span = span!(Lev

Recommendations