Sobre o projeto
spdlog é uma biblioteca de registro (logging) C++ de alto desempenho projetada para velocidade, flexibilidade e facilidade de uso. Pode ser usada como uma biblioteca somente de cabeçalhos (header-only) ou compilada para tempos de build mais rápidos, exigindo apenas um compilador C++11. A biblioteca é construída sobre a biblioteca de formatação fmt, fornecendo formatação de saída rica em recursos com suporte para argumentos posicionais, preenchimento, alinhamento e formatadores de tipos personalizados.
Os principais recursos incluem modos de registro síncrono e assíncrono, loggers multithreaded e single-threaded, e uma ampla gama de destinos de log, como arquivos de log rotativos, arquivos de log diários, saída de console com suporte a cores, syslog, log de eventos do Windows, saída do depurador do Windows e widgets Qt. Sinks personalizados podem ser implementados para estender a biblioteca a destinos adicionais. Os níveis de log podem ser filtrados em tempo de execução ou compilação, e os níveis podem ser carregados de variáveis de ambiente ou argumentos de linha de comando.
A biblioteca suporta funcionalidade de backtrace, onde mensagens de depuração são armazenadas em um buffer circular e podem ser despejadas sob demanda—útil para exibir saída de depuração recente quando um erro ocorre. Utilitários adicionais incluem liberação periódica (flushing) de loggers registrados, suporte a cronômetro (stopwatch) para medições de tempo, registro de dados binários em formato hexadecimal, contexto de diagnóstico mapeado (MDC) para pares chave-valor locais de thread e callbacks definidos pelo usuário para eventos de log. Handlers de erro personalizados e handlers de eventos de abertura/fechamento de arquivo fornecem controle adicional sobre o comportamento do registro.
spdlog é multiplataforma, suportando Linux, FreeBSD, OpenBSD, Solaris, AIX, Windows (MSVC 2013+, Cygwin), macOS (Clang 3.5+) e Android. Está disponível através de numerosos gerenciadores de pacotes, incluindo apt, Homebrew, MacPorts, FreeBSD pkg, dnf, emerge, pacman, zypper, vcpkg, conan, conda e build2. Benchmarks em Ubuntu 64 bits com uma CPU Intel i7-4770 mostram uma taxa de transferência síncrona single-thread de aproximadamente 5,7 milhões de mensagens por segundo para registro básico, com modo assíncrono alcançando até 2,6 milhões de mensagens por segundo sob contenção de 10 threads com uma política de overrun. Documentação está disponível no wiki do projeto.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.