Registro en aplicaciones Rust: mejores prácticas para principiantes

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción al registro en Rust



El registro (logging) es el proceso de registrar información sobre el funcionamiento de un programa. Para los desarrolladores principiantes en Rust, el registro puede parecer algo complejo, pero en realidad es una de las herramientas más potentes para la depuración y el monitoreo. En este artículo, analizaremos las mejores prácticas de registro en Rust que le ayudarán a escribir aplicaciones más fiables y mantenibles.



¿Por qué es tan importante el registro? Imagine que su aplicación falla inesperadamente en producción. Sin registros, se quedará completamente a oscuras: tendrá que adivinar qué salió mal. Con un registro correctamente configurado, podrá encontrar y corregir el error rápidamente. En Rust, el ecosistema de registro se basa en crates potentes y flexibles que veremos hoy.



1. Fundamentos del registro: el crate log



En Rust, el estándar de facto para el registro es el crate log. Proporciona una interfaz abstracta que no depende de una implementación concreta. Esto significa que puede escribir código usando las macros de log y luego cambiar entre diferentes backends (por ejemplo, env_logger, log4rs o slog) sin modificar el código principal.



Instalación y configuración



Añada la dependencia a su Cargo.toml:



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


Ahora puede usar las macros de registro en su código. Aquí tiene un ejemplo sencillo:



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

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

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

info!("Aplicación iniciada"); warn!("El usuario {} tiene {} años, verifique los datos", user, age); error!("No se pudo conectar a la base de datos");

println!("Programa finalizado");}


Importante: sin llamar a env_logger::init(), las macros de log no mostrarán nada. La inicialización debe ocurrir una sola vez al principio del programa.



Niveles de registro



El crate log admite cinco niveles de registro (del más importante al menos importante):



  • error! — errores críticos que requieren atención inmediata. Úselo para situaciones en las que el programa no puede continuar.
  • warn! — advertencias. Algo salió mal, pero el programa puede continuar (por ejemplo, una API obsoleta o un valor inesperado).
  • info! — información general sobre el progreso del programa. Útil para rastrear eventos clave (inicio, finalización, transiciones importantes).
  • debug! — información de depuración. Se usa durante el desarrollo para un análisis detallado.
  • trace! — el nivel más detallado. Registra cada paso de la ejecución. Úselo con precaución: puede saturar la salida.


El filtrado por nivel ocurre automáticamente. Por defecto, env_logger muestra todos los mensajes con nivel error, warn e info. Puede cambiar esto fácilmente con la variable de entorno RUST_LOG:



# Mostrar solo erroresRUST_LOG=error cargo run

# Mostrar todo, incluyendo traceRUST_LOG=trace cargo run

# Mostrar solo para un módulo específicoRUST_LOG=my_module=debug cargo run


2. Registro práctico: registros estructurados



El registro simple de cadenas de texto está bien, pero para sistemas en producción es mejor usar registros estructurados. En lugar de escribir "El usuario Alexey inició sesión", puede registrar un objeto JSON con los campos event, user, timestamp. Esto simplifica el análisis de registros con herramientas como Elasticsearch o Grafana.



Uso

Blogs

Book Recommendations