Метка: логирование

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 стал недоступен, а

Управление логированием без перезапуска

Управление логированием без перезапуска особенно важно для production-сервисов. Подробные debug-логи очень нужны именно тогда, когда что-то пошло не так, но держать их включенными постоянно обычно нельзя. Они создают шум, увеличивают объем файлов, могут замедлять горячие участки кода и иногда раскрывают детали, которые не должны постоянно попадать в лог. Самый простой подход — поменять конфиг и

Подсистемы в логировании: зачем нужны и как ими пользоваться

Подсистемы логирования C++ становятся необходимыми по мере роста проекта, хотя на старте о них почти не задумываются. Почти любой проект начинает с простого логирования. Несколько уровней — debug, info, warning, error — и этого хватает, чтобы понимать, что происходит. Пока код небольшой, лог читается как последовательный рассказ: сначала произошло это, потом это, потом ошибка. Но