spdlog para C++: guia completo com exemplos

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

O que é spdlog e para que serve?

\n\n

spdlog é uma biblioteca de logging ultrarrápida, header-only para C++, distribuída sob a licença MIT. Sua principal característica é o desempenho incrível, alcançado por meio de gravação assíncrona, quantidade mínima de alocações e uso de recursos modernos do C++11/14/17. Em benchmarks, spdlog é frequentemente 5 a 10 vezes mais rápido que bibliotecas como glog ou Boost.Log.

\n\n

Por que usar spdlog? Em qualquer aplicação C++ não trivial, o logging não é um luxo, mas uma necessidade. Ele ajuda a:

\n
    \n
  • Depurar erros em ambiente de produção, onde não há depurador.
  • \n
  • Rastrear o fluxo de execução do programa (trace).
  • \n
  • Analisar desempenho (medição do tempo de execução de trechos de código).
  • \n
  • Realizar auditoria de segurança (registro de tentativas de login, alterações de dados).
  • \n
\n\n

spdlog fornece um sistema flexível: você pode escrever logs no console, em arquivos (incluindo com rotação por tamanho ou tempo), no syslog, em banco de dados (via ODBC) ou até mesmo enviá-los pela rede. O modo assíncrono é suportado, permitindo não bloquear a thread principal da aplicação durante a gravação dos logs.

\n\n

Instalação do spdlog

\n\n

Ao contrário do Python, o C++ não possui um gerenciador de pacotes único, mas existem várias formas padrão de instalar o spdlog.

\n\n

Método 1: Header-only (recomendado para iniciantes)

\n

A maneira mais simples é baixar os arquivos de cabeçalho e simplesmente incluí-los no seu projeto. Nenhuma compilação é necessária.

\n
    \n
  1. Baixe o último release do GitHub.
  2. \n
  3. Descompacte o arquivo.
  4. \n
  5. Copie a pasta include/spdlog para o seu projeto.
  6. \n
  7. No código, use #include "spdlog/spdlog.h".
  8. \n
\n\n

Método 2: Através do gerenciador de pacotes vcpkg

\n

vcpkg é um gerenciador de pacotes popular para C++ da Microsoft.

\n
# Instalação\ngit clone https://github.com/Microsoft/vcpkg.git\ncd vcpkg\n./bootstrap-vcpkg.sh  # ou bootstrap-vcpkg.bat no Windows\n./vcpkg install spdlog\n\n# Integração com seu sistema de build\n./vcpkg integrate install
\n\n

Método 3: Através do Conan

\n

Conan é outro gerenciador de pacotes popular.

\n
# No arquivo conanfile.txt\n[requires]\nspdlog/1.12.0\n\n[generators]\ncmake_find_package\n\n# Instalação\nconan install . --build=missing
\n\n

Método 4: CMake FetchContent (abordagem moderna)

\n

Se você usa CMake, pode puxar a biblioteca diretamente do repositório:

\n
include(FetchContent)\nFetchContent_Declare(\n  spdlog\n  GIT_REPOSITORY https://github.com/gabime/spdlog.git\n  GIT_TAG v1.12.0\n)\nFetchContent_MakeAvailable(spdlog)\n\n# No seu target\ntarget_link_libraries(my_app PRIVATE spdlog::spdlog)
\n\n

Início rápido com exemplo de código

\n\n

Vamos escrever um programa simples que exibe logs de diferentes níveis no console e em um arquivo.

\n\n
#include "spdlog/spdlog.h"\n#include "spdlog/sinks/basic_file_sink.h"\n#include <memory>\n\nint main() {\n    // 1. Criando um logger para o console (colorido por padrão)\n    auto console = spdlog::stdout_color_mt("console");\n\n    // 2. Criando um logger para arquivo\n    auto file_logger = spdlog::basic_logger_mt("file_logger", "logs/app.log");\n\n    // 3. Definindo o nível de logging (padrão - trace)\n    spdlog::set_level(spdlog::level::trace);\n\n    // 4. Escrevendo mensagens de diferentes níveis\n    console->trace("Esta é uma mensagem trace (nível mais detalhado)");\n    console->debug("Debug: valor da variável x = {}", 42);\n    console->info("Programa iniciado com sucesso");\n    console->warn("Aviso: memória quase esgotada");\n    console->error("Erro: não foi possível abrir o arquivo");\n    console->critical("Crit                    

Recommendations