Registro para C++: melhores soluções (spdlog, glog, P7)

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 C++: melhores soluções

O registro é um aspecto criticamente importante do desenvolvimento de qualquer aplicação séria em C++. Um sistema de registro configurado corretamente permite monitorar o estado do programa, identificar erros, realizar auditoria e depuração em ambiente de produção. Ao contrário de simples std::cout, bibliotecas profissionais fornecem níveis de importância (trace, debug, info, warn, error, fatal), rotação de arquivos, gravação assíncrona e impacto mínimo no desempenho. Neste artigo, analisaremos três das melhores soluções para C++: spdlog, Google glog e P7.



1. spdlog — logger rápido e moderno

spdlog é uma biblioteca header-only, escrita em C++11/14/17. É considerada um dos loggers mais rápidos no ecossistema C++. Principais vantagens: suporte a modo assíncrono, múltiplos formatos de saída (console, arquivo, syslog, personalizados), saída colorida para console e consumo mínimo de memória.



Exemplo de uso básico:

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

int main() { // Criando um logger de arquivo auto file_logger = spdlog::basic_logger_mt("file_logger", "logs/app.log"); // Definindo o nível de registro spdlog::set_level(spdlog::level::debug);

// Registrando mensagens spdlog::info("Aplicação iniciada"); file_logger->warn("Usuário {} tentou fazer login com senha incorreta", "admin"); file_logger->error("Erro de conexão com o banco de dados: {}", 404);

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


Principais características:

  • Desempenho: até 5-10 milhões de mensagens por segundo em modo assíncrono.
  • Flexibilidade: suporte a sinks (saídas) — console, arquivo, syslog, Telegram, Kafka.
  • Rotação de arquivos: criação automática de logs por tamanho ou tempo.
  • Saída colorida: níveis são coloridos para diagnóstico visual rápido.


2. Google glog — logger testado pelo tempo

Google glog (glog) é uma biblioteca do Google, desenvolvida para necessidades internas da empresa. É simples, confiável e excelente para aplicações de servidor. O foco principal está na categorização de logs e gravação automática em arquivos.



Exemplo de uso:

#include <glog/logging.h>

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

// Configuração de saída para arquivo FLAGS_log_dir = "./logs"; FLAGS_stderrthreshold = 1; // Exibir WARNING e acima no stderr

LOG(INFO) << "Servidor iniciado na porta " << 8080; LOG(WARNING) << "Baixo nível de memória: " << 512 << " MB"; LOG(ERROR) << "Falha ao abrir arquivo de configuração";

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

google::ShutdownGoogleLogging(); return 0;}


Características do glog:

  • Rotação automática: arquivos são criados por dia e tamanho.
  • Registro condicional: LOG_IF, CHECK para verificações.
  • Suporte a sinais: registra automaticamente dump de pilha em caso de crash.
  • Configuração mínima: funciona "pronto para uso".


3. P7 — logger para sistemas de alta carga

P7 (ou P7::Logger) é uma biblioteca focada em desempenho máximo e impacto mínimo na latência da aplicação. Ela utiliza uma fila assíncrona e minimiza bloqueios. Ideal para engines de jogos, sistemas financeiros e

Recommendations