rsiot/logging/
target_esp.rs

1use esp_idf_svc::log::{set_target_level, EspLogger};
2use log::LevelFilter as LogLevelFilter;
3use tracing::level_filters::LevelFilter as TracingLevelFilter;
4
5/// Конфигурация логгирования для микроконтроллера ESP32
6///
7/// Также необходимо настроить переменную CONFIG_LOG_DEFAULT_LEVEL_ в sdkconfig.defaults. Возможные
8/// значения:
9/// - No output (CONFIG_LOG_DEFAULT_LEVEL_NONE)
10/// - Error (CONFIG_LOG_DEFAULT_LEVEL_ERROR)
11/// - Warning (CONFIG_LOG_DEFAULT_LEVEL_WARN)
12/// - Info (CONFIG_LOG_DEFAULT_LEVEL_INFO)
13/// - Debug (CONFIG_LOG_DEFAULT_LEVEL_DEBUG)
14/// - Verbose (CONFIG_LOG_DEFAULT_LEVEL_VERBOSE)
15///
16/// В консоль будут попадать логи, которые являются минимумом двух значений:
17/// - заданного в файле `sdkconfig.defaults` при компиляции
18/// - значения аргумента `level` данной функции в рантайме
19pub fn configure_logging(level: TracingLevelFilter) -> super::Result<()> {
20    EspLogger::initialize_default();
21
22    let level = match level {
23        TracingLevelFilter::TRACE => LogLevelFilter::Trace,
24        TracingLevelFilter::DEBUG => LogLevelFilter::Debug,
25        TracingLevelFilter::INFO => LogLevelFilter::Info,
26        TracingLevelFilter::WARN => LogLevelFilter::Warn,
27        TracingLevelFilter::ERROR => LogLevelFilter::Error,
28        TracingLevelFilter::OFF => LogLevelFilter::Off,
29    };
30    set_target_level("*", level)?;
31    Ok(())
32}