spdlog — быстрая библиотека логирования для C++. Доступна в двух вариантах: header-only (достаточно скопировать папку include и использовать компилятор с поддержкой C++11) и скомпилированная, которая рекомендуется из-за заметно меньшего времени сборки.
Библиотека работает на Linux, FreeBSD, OpenBSD, Solaris, AIX, Windows (MSVC 2013+, cygwin), macOS (clang 3.5+) и Android. Установка возможна через множество пакетных менеджеров: Debian, Homebrew, MacPorts, FreeBSD, Fedora, Gentoo, Arch Linux, openSUSE, ALT Linux, vcpkg, conan, conda, build2.
Форматирование построено на библиотеке fmt и поддерживает пользовательские шаблоны и собственные флаги в паттерне. Есть опциональный асинхронный режим, однопоточные и многопоточные логгеры, а также фильтрация уровней логирования во время компиляции и выполнения.
Среди приёмников вывода: ротируемые и ежедневные файлы, консоль с цветами, syslog, журнал событий Windows, отладчик Windows и виджеты Qt. Список легко расширяется собственными приёмниками, а уровни можно загружать из переменных окружения или argv.
Отдельно стоит отметить backtrace: отладочные сообщения хранятся в кольцевом буфере и выводятся по требованию. Доступны периодический сброс буфера, секундомер, вывод бинарных данных в hex, пользовательские обработчики событий и ошибок.
Бенчмарки для синхронного и асинхронного режимов проводились на Ubuntu 64 bit, Intel i7-4770 CPU @ 3.40GHz.
Подробная документация и примеры использования собраны в вики-страницах проекта.
GitHub ★ 29,341
