Метка: logme

logme — это библиотека логирования для C/C++, которая позволяет управлять логами во время выполнения. Она дает возможность гибко включать и отключать логирование, перенаправлять сообщения в разные источники и ограничивать их объем без перезапуска приложения.

Согласно результатам тестирования производительности, на данные момент эта библиотека является одной из самых быстрых.

Библиотека помогает выстроить удобную и масштабируемую систему логирования: разработчик может настраивать уровни логов, маршрутизацию и форматирование через конфигурацию, а не через перекомпиляцию кода. Такой подход упрощает отладку и эксплуатацию приложений, особенно в продакшене.

Содержит уникальный функционал по реализации однократных сообщений, сообщений появляющихся в логах не чаще указанного периода, переименования потоков, исключения выполнения кода по подготовке вывода в отключенные каналы.

logme поддерживает сценарии раннего (boot) логирования, работу с конфигурацией из внешних источников и последующее объединение логов в единую систему. Благодаря этому приложение сохраняет диагностическую информацию даже на самых ранних этапах инициализации.

FileBackend в production: ротация логов C++ в logme

Записать сообщения в файл несложно. Гораздо сложнее сделать так, чтобы через несколько месяцев работы сервиса файловое логирование оставалось предсказуемым. Нужно ограничивать размер активного файла, сохранять историю и удалять старые архивы. Кроме того, полезно сжимать завершённые логи и не заставлять рабочие потоки ждать каждую запись на диск. Поэтому ротация логов C++ в production — это не

Контекст потока в логировании C++: thread-local context в logme

Хороший лог должен отвечать не только на вопрос «что произошло», но и давать контекст: с каким запросом, соединением, клиентом или фоновой задачей связано сообщение. Пока программа небольшая, нужные данные легко добавить прямо в текст: LogmeI( "Request %s: loading profile for user %d" , requestId , userId ); Проблема начинается глубже в стеке вызовов. requestId нужен

Настраиваем уровень логирования подсистем Logme

В многокомпонентном приложении один канал логирования часто используется сразу несколькими компонентами. Logme позволяет задать отдельный уровень логирования подсистемы, не меняя уровень всего канала. Благодаря этому можно включить DEBUG только для проблемного компонента или, наоборот, подавить слишком частые INFO-сообщения одной подсистемы. Представим сервер, в котором подсистемы HTTP, TLS, AUTH и POLICY пишут в один журнал: 2026-07-28

Профилирование источников логирования: какая строка создаёт нагрузку?

Как профилирование источников логирования связывает нагрузку на CPU и файловый ввод-вывод с конкретными конструкциями C и C++, не отключая рабочую диагностику Профилирование источников логирования начинается там, где обычный CPU-профайлер останавливается. Системный профайлер умеет показать, что заметную долю процессорного времени потребляет поток логирования, а в верхней части профиля находятся write(), worker файлового backend, синхронизация очереди, копирование