🏴‍☠️
Сашка ☕
Blog  Tags 
💀 🔵 🔴

💬 ESP32: Логирование и отладка

Опубликовано: 24 сентября 2026 г.

ℹ️ Возможно! руководство написано не до конца.

ℹ️ Используемые ресурсы

🪵 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);