O que é spdlog e para que serve?
\n\nspdlog é 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\nPor 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
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\nInstalação do spdlog
\n\nAo 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\nMétodo 1: Header-only (recomendado para iniciantes)
\nA maneira mais simples é baixar os arquivos de cabeçalho e simplesmente incluí-los no seu projeto. Nenhuma compilação é necessária.
\n- \n
- Baixe o último release do GitHub. \n
- Descompacte o arquivo. \n
- Copie a pasta
include/spdlogpara o seu projeto. \n - No código, use
#include "spdlog/spdlog.h". \n
Método 2: Através do gerenciador de pacotes vcpkg
\nvcpkg é 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\nMétodo 3: Através do Conan
\nConan é 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\nMétodo 4: CMake FetchContent (abordagem moderna)
\nSe você usa CMake, pode puxar a biblioteca diretamente do repositório:
\ninclude(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\nInício rápido com exemplo de código
\n\nVamos 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