Категория: Логирование

Этот раздел посвящён логированию на C и C++. Мы фокусируемся на реальных задачах, а не на абстрактных схемах.

Здесь вы найдёте разбор API, подходов к форматированию, буферизации и выводу данных. Мы анализируем библиотеки логирования и сравниваем разные решения.

Мы также разбираем проблемы, которые возникают в продакшене. Например, сложность интеграции, поведение под нагрузкой и ошибки проектирования.

Логирование — это не просто вспомогательный инструмент. Это важная часть системы, которую нужно проектировать осознанно.

logmeobf: обфускация логов

logmeobf легко неправильно понять по названию. Можно решить, что это отдельная утилита, которую нужно регулярно запускать над готовыми текстовыми логами: сначала приложение пишет app.log, потом logmeobf превращает его в app.logobf. Это не основной сценарий работы. В обычной конфигурации logme обфусцирует запись сразу в момент записи файла. Приложение передает библиотеке ключ, а FileBackend вместо обычного text,

Как подготовить логи logme для ELK, Loki, OpenSearch и Splunk

Подготовка логов для ELK, Loki, OpenSearch или Splunk начинается не с выбора агента и не с написания parser-а. Сначала нужно решить, каким является один логический event, какие поля должны быть стабильными, где находится время события и как файл будет жить после rotation. Самая частая ошибка — считать, что достаточно включить JSON. JSON сам по себе

Crash logging в C++

Почему обычный логгер не всегда можно вызвать из signal handler Когда C++ приложение падает, первое желание разработчика — записать последнее сообщение в лог. Например: “received SIGABRT”, “segmentation fault”, “fatal check failed”, “terminating process”. На первый взгляд это выглядит просто: раз в проекте уже есть логгер, надо вызвать его из signal handler или crash handler и

Как не утонуть в одинаковых ошибках: CollapseXXX в logme

Одинаковые ошибки в логах — одна из самых неприятных проблем production-диагностики. Иногда проблема не в том, что логов мало, а в том, что их слишком много. Когда ошибка повторяется в цикле, на каждом reconnect-е, на каждом retry или на каждом запросе, лог быстро превращается в поток почти одинаковых строк. Например, внешний backend стал недоступен, а