💬 ESP32: Логирование и отладка
Опубликовано: 24 сентября 2026 г.
ℹ️ Возможно! руководство написано не до конца.
ℹ️ Используемые ресурсы
- Logging library (docs.espressif.com)
- ESP_LOG или Отладка через UART (kotyara12.ru)
🪵 esp_log.h
Библиотека логирования предоставляет несколько стандартных функций (на самом деле это макросы препроцессора) с разными уровнями детализации событий:
Список уровней логирования:
ESP_LOGE– ошибка (минимальный уровень)ESP_LOGW– предупреждениеESP_LOGI– информацияESP_LOGD– отладочные сообщенияESP_LOGV– всё подряд (максимальный уровень)
Все эти функции имеют одинаковый шаблон ESP_LOGx (tag, format, ...), где:
tag– текстовая метка модуля / библиотеки, из которой был сделан вызовESP_LOGx. Служит для облегчения идентификации сообщений в общем потоке монитора терминала.format– строка форматирования (подробнее ниже)....– параметры форматирования (не обязательно).
Существуют специальные версии для специальных случаев:
ESP_EARLY_LOGx– для вызова из стартового кода.ESP_DRAM_LOGx– для вызова из прерываний. Если вы попытаетесь вызывать обычную вервию лога из обработчика прерываний, то получите перезагрузку микроконтроллера поWDT– будьте внимательны.
📊 Уровни логирования
Для изменения уровня логов, можно установить один из
следующих уровней детализации
(тип esp_log_level_t):
ESP_LOG_NONE– сообщения не выводятся, совсемESP_LOG_ERROR– критические ошибки, программный модуль не может восстановиться самостоятельноESP_LOG_WARN– ошибки, при которых были приняты меры по восстановлению работоспособностиESP_LOG_INFO– информационные сообщения, описывающие нормальный ход событийESP_LOG_DEBUG– дополнительная информация, которая не требуется для нормального использования (значения, указатели, размеры и т.д.)ESP_LOG_VERBOSE– большие фрагменты отладочной информации или частые сообщения, которые потенциально могут затопить вывод
Все журналы для уровней детализации ниже CONFIG_LOG_DEFAULT_LEVEL включены по умолчанию.
Для установки уровня детализации для каждого модуля отдельно можно использовать функцию
void esp_log_level_set().
Для этого используется тег.
Пример установки уровней логирования.
// Set log level to ERROR for all components (global setting)
esp_log_level_set("*", ESP_LOG_ERROR);
// Set log level to WARNING for the WiFi component (module-specific setting)
esp_log_level_set("wifi", ESP_LOG_WARN);
// Set log level to INFO for the DHCP client (module-specific setting)
esp_log_level_set("dhcpc", ESP_LOG_INFO);