Registro para C++: mejores soluciones (spdlog, glog, P7)

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

Registro para C++: mejores soluciones

El registro es un aspecto crítico en el desarrollo de cualquier aplicación seria en C++. Un sistema de registro correctamente configurado permite rastrear el estado del programa, detectar errores, realizar auditorías y depuración en entornos de producción. A diferencia de simples std::cout, las bibliotecas profesionales proporcionan niveles de importancia (trace, debug, info, warn, error, fatal), rotación de archivos, escritura asíncrona y un impacto mínimo en el rendimiento. En este artículo, analizaremos tres de las mejores soluciones para C++: spdlog, Google glog y P7.



1. spdlog — un registrador rápido y moderno

spdlog es una biblioteca de solo cabecera (header-only) escrita en C++11/14/17. Se considera uno de los registradores más rápidos en el ecosistema C++. Sus principales ventajas incluyen: soporte para modo asíncrono, múltiples formatos de salida (consola, archivo, syslog, personalizados), salida a color para la consola y un consumo mínimo de memoria.



Ejemplo de uso básico:

#include "spdlog/spdlog.h"#include "spdlog/sinks/basic_file_sink.h"

int main() { // Creamos un registrador de archivo auto file_logger = spdlog::basic_logger_mt("file_logger", "logs/app.log"); // Establecemos el nivel de registro spdlog::set_level(spdlog::level::debug);

// Registramos mensajes spdlog::info("Aplicación iniciada"); file_logger->warn("El usuario {} intentó iniciar sesión con una contraseña incorrecta", "admin"); file_logger->error("Error de conexión a la base de datos: {}", 404);

// Registro asíncrono spdlog::flush_every(std::chrono::seconds(3)); return 0;}


Características clave:

  • Rendimiento: hasta 5-10 millones de mensajes por segundo en modo asíncrono.
  • Flexibilidad: soporte para sinks (salidas) — consola, archivo, syslog, Telegram, Kafka.
  • Rotación de archivos: creación automática de registros por tamaño o tiempo.
  • Salida a color: los niveles se colorean para un diagnóstico visual rápido.


2. Google glog — un registrador probado por el tiempo

Google glog (glog) es una biblioteca de Google, desarrollada para necesidades internas de la empresa. Es simple, confiable y excelente para aplicaciones de servidor. Su enfoque principal está en la categorización de registros y la escritura automática en archivos.



Ejemplo de uso:

#include <glog/logging.h>

int main(int argc, char* argv[]) { google::InitGoogleLogging(argv[0]);

// Configuración de salida a archivo FLAGS_log_dir = "./logs"; FLAGS_stderrthreshold = 1; // Mostrar WARNING y superior en stderr

LOG(INFO) << "Servidor iniciado en el puerto " << 8080; LOG(WARNING) << "Bajo nivel de memoria: " << 512 << " MB"; LOG(ERROR) << "No se pudo abrir el archivo de configuración";

// Registro condicional int x = 5; LOG_IF(INFO, x > 3) << "x es mayor que 3";

google::ShutdownGoogleLogging(); return 0;}


Características de glog:

  • Rotación automática: los archivos se crean por día y tamaño.
  • Registro condicional: LOG_IF, CHECK para verificaciones.
  • Soporte de señales: registra automáticamente un volcado de pila en caso de caída.
  • Configuración mínima: funciona "de fábrica".


3. P7 — registrador para sistemas de alta carga

P7 (o P7::Logger) es una biblioteca orientada al máximo rendimiento y al mínimo impacto en la latencia de la aplicación. Utiliza una cola asíncrona y minimiza los bloqueos. Es ideal para motores de juegos, sistemas financieros y

Recommendations