Категория: С++

Макросы логирования в C++: почему всё так сложно

Когда разработчик впервые смотрит на современную библиотеку логирования для C++, его почти всегда удивляет одно и то же: количество макросов. Почему их так много? Разве нельзя просто сделать одну красивую функцию Log() и успокоиться? Почему у библиотек вроде logme появляются десятки вариантов вроде LogmeI, LogmeW, LogmePV, fLogmeD, CH, SID, CHINT и других? На первый взгляд

Логирование на стадии ранней инициализации приложения

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

Как сделать логи читаемыми: практические приёмы на примере logme

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

Профилирование функций с использованием библиотеки logme

В библиотеку logme встроена мощная поддержка профилирования функций. Профилирование функций с logme это просто. Есть возможность, просто добавив один макрос, обеспечить вывод в лог информации о входе в функцию с указанием её имени, выходе из неё, а также при необходимости — печати параметров и возвращаемого значения. Это позволяет без особых усилий понять, как и когда