¿Qué es la biblioteca log para Rust?
La biblioteca log es una abstracción estándar para el registro (logging) en el ecosistema de Rust. Proporciona una fachada (facade) ligera que permite a los desarrolladores escribir código que genere registros sin vincularse a una implementación específica de un logger (por ejemplo, env_logger, simple_logger o slog). Es análoga a las bibliotecas populares de logging en Python, pero con un enfoque en el rendimiento y la seguridad de la memoria.
¿Para qué sirve la biblioteca log?
El objetivo principal de log es separar la generación de registros de su procesamiento. Puedes usar las macros info!, warn!, error! en tu código y, más tarde, conectando uno de los backends (por ejemplo, env_logger), redirigir la salida a la consola, un archivo o un sistema de monitoreo. Esto es especialmente útil para:
- Depuración de sistemas complejos
- Monitoreo de aplicaciones en producción
- Creación de bibliotecas que no deben dictar al usuario la forma de registrar
Instalación
Añade a Cargo.toml:
[dependencies]log = "0.4"env_logger = "0.10" # para salida a consolaLuego ejecuta cargo build.
Funciones principales
- Macros de registro:
error!,warn!,info!,debug!,trace!— con soporte para formato de cadenas como enprintln!. - Niveles de filtrado: se puede establecer un nivel mínimo (por ejemplo, solo errores) a través de la variable de entorno
RUST_LOG. - Extensibilidad: soporte para loggers personalizados a través del trait
Log. - Seguridad: los registros no afectan el rendimiento si el nivel está desactivado.
Ejemplo de código en Rust
use log::{info, warn, error};
fn main() { // Inicialización del logger (env_logger) env_logger::init();
let user = "Alice"; let status = 200;
info!("Usuario {} inició sesión", user); warn!("Estado de respuesta: {} — posible caché obsoleto", status); error!("No se pudo conectar a la base de datos: {}", "timeout");}Ejecuta con RUST_LOG=info cargo run para ver todos los mensajes de nivel info y superiores.
Cuándo usarla
La biblioteca log es ideal para:
- Cualquier aplicación Rust que necesite un sistema de registro estándar (CLI, servidores, utilidades).
- Bibliotecas — para que el usuario pueda elegir su propio backend.
- Proyectos que migran desde Python: el concepto es similar a
logging.getLogger().
Evita log si necesitas escritura asíncrona a archivo o registros JSON estructurados — en esos casos, tracing o slog son más adecuados.
También en la biblioteca
Ktor Client — Cliente HTTP para Kotlin
Benchmark en C++: guía completa con ejemplos prácticos
Trabajo con CSV en Java: bibliotecas OpenCSV, Apache Commons CSV y Java Scanner
Biblioteca WebSocket Kotlin: Cliente y Servidor WebSocket Ktor
GraphQL Java: Guía completa de la biblioteca para crear API en Java