O que é a biblioteca log para Rust?
A biblioteca log é uma abstração padrão para logging no ecossistema Rust. Ela fornece uma fachada (facade) leve que permite aos desenvolvedores escrever código que gera logs, sem se prender a uma implementação específica de logger (por exemplo, env_logger, simple_logger ou slog). É análoga às bibliotecas populares de logging em Python, mas com foco em desempenho e segurança de memória.
Por que a biblioteca log é necessária?
O principal objetivo do log é separar a geração de logs do seu processamento. Você pode usar as macros info!, warn!, error! no seu código e, posteriormente, ao conectar um dos backends (por exemplo, env_logger), redirecionar a saída para o console, um arquivo ou um sistema de monitoramento. Isso é especialmente útil para:
- Depuração de sistemas complexos
- Monitoramento de aplicações em produção
- Criação de bibliotecas que não devem ditar ao usuário a forma de fazer logging
Instalação
Adicione ao Cargo.toml:
[dependencies]log = "0.4"env_logger = "0.10" # para saída no consoleEm seguida, execute cargo build.
Principais funções
- Macros de logging:
error!,warn!,info!,debug!,trace!— com suporte para formatação de strings como emprintln!. - Níveis de filtragem: é possível definir um nível mínimo (por exemplo, apenas erros) através da variável de ambiente
RUST_LOG. - Extensibilidade: suporte para loggers personalizados através da trait
Log. - Segurança: os logs não afetam o desempenho se o nível estiver desabilitado.
Exemplo de código em Rust
use log::{info, warn, error};
fn main() { // Inicialização do logger (env_logger) env_logger::init();
let user = "Alice"; let status = 200;
info!("Usuário {} entrou no sistema", user); warn!("Status da resposta: {} — cache possivelmente desatualizado", status); error!("Falha ao conectar ao banco de dados: {}", "timeout");}Execute com RUST_LOG=info cargo run para ver todas as mensagens de nível info e superiores.
Quando usar
A biblioteca log é ideal para:
- Qualquer aplicação Rust que precise de um sistema de logging padrão (CLI, servidores, utilitários).
- Bibliotecas — para que o usuário possa escolher o backend.
- Projetos migrando de Python: o conceito é semelhante a
logging.getLogger().
Evite o log se você precisar de gravação assíncrona em arquivo ou logs JSON estruturados — nesses casos, tracing ou slog são mais adequados.
Também na biblioteca
Trabalhando com CSV em C++: bibliotecas e exemplos de código
Configuração de aplicações TypeScript: bibliotecas e ferramentas
Trabalho com datas em Go (Golang): visão geral de bibliotecas e pacotes
Internacionalização (i18n) em Node.js: i18next e polyglot
Trabalhando com Excel em JavaScript (Node.js): bibliotecas e ferramentas