Об этом проекте
spdlog — это высокопроизводительная C++ библиотека для логирования, рассчитанная на скорость, гибкость и простоту использования. Её можно применять как библиотеку только с заголовками (header-only) или компилировать для ускорения сборки; требуется лишь компилятор C++11. Библиотека построена на основе библиотеки форматирования fmt, что обеспечивает богатые возможности форматирования вывода, включая позиционные аргументы, заполнение, выравнивание и пользовательские форматтеры типов.
Основные возможности включают синхронный и асинхронный режимы логирования, многопоточные и однопоточные логгеры, а также широкий набор целей вывода: ротация лог-файлов, ежедневные лог-файлы, консольный вывод с поддержкой цветов, syslog, журнал событий Windows, вывод отладчика Windows и виджеты Qt. Пользовательские приёмники (sinks) могут быть реализованы для расширения библиотеки на другие цели. Уровни логирования можно фильтровать во время выполнения или компиляции; уровни могут загружаться из переменных окружения или аргументов командной строки.
Библиотека поддерживает функцию backtrace (трассировки), при которой отладочные сообщения хранятся в кольцевом буфере и могут быть выгружены по требованию — это полезно для отображения недавних отладочных сообщений при возникновении ошибки. Дополнительные утилиты включают периодическую сброс (flush) зарегистрированных логгеров, поддержку секундомера для измерения времени, логирование бинарных данных в шестнадцатеричном формате, контекст сопоставления (MDC) для локальных пар «ключ-значение» в потоках и пользовательские обратные вызовы для событий логирования. Пользовательские обработчики ошибок и обработчики событий открытия/закрытия файлов обеспечивают дополнительный контроль над поведением логирования.
spdlog — кросс-платформенная библиотека: поддерживаются Linux, FreeBSD, OpenBSD, Solaris, AIX, Windows (MSVC 2013+, Cygwin), macOS (Clang 3.5+) и Android. Она доступна через множество менеджеров пакетов, включая apt, Homebrew, MacPorts, FreeBSD pkg, dnf, emerge, pacman, zypper, vcpkg, conan, conda и build2. Бенчмарки на Ubuntu 64-bit с процессором Intel i7-4770 показывают синхронную однопоточную пропускную способность около 5,7 миллиона сообщений в секунду для базового логирования, а асинхронный режим достигает до 2,6 миллиона сообщений в секунду при конкуренции 10 потоков с политикой переполнения. Документация доступна в вики проекта.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.