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}