17 none =
static_cast<int>(ESP_LOG_NONE),
18 error =
static_cast<int>(ESP_LOG_ERROR),
19 warn =
static_cast<int>(ESP_LOG_WARN),
20 info =
static_cast<int>(ESP_LOG_INFO),
21 debug =
static_cast<int>(ESP_LOG_DEBUG),
22 verbose =
static_cast<int>(ESP_LOG_VERBOSE)
32#define LOGE_BUFFER_HEX(tag, buffer, buff_len) ESP_LOG_BUFFER_HEX_LEVEL(tag, buffer, buff_len, ESP_LOG_ERROR)
33#define LOGW_BUFFER_HEX(tag, buffer, buff_len) ESP_LOG_BUFFER_HEX_LEVEL(tag, buffer, buff_len, ESP_LOG_WARN)
34#define LOGI_BUFFER_HEX(tag, buffer, buff_len) ESP_LOG_BUFFER_HEX_LEVEL(tag, buffer, buff_len, ESP_LOG_INFO)
35#define LOGD_BUFFER_HEX(tag, buffer, buff_len) ESP_LOG_BUFFER_HEX_LEVEL(tag, buffer, buff_len, ESP_LOG_DEBUG)
36#define LOGV_BUFFER_HEX(tag, buffer, buff_len) ESP_LOG_BUFFER_HEX_LEVEL(tag, buffer, buff_len, ESP_LOG_VERBOSE)
55 void log_buffer(
const char *format, std::uint32_t timestamp,
void const *buffer, std::size_t buffer_length);
58#define MLAB_LOG_COLOR_E "\033[0;31m"
59#define MLAB_LOG_COLOR_W "\033[0;33m"
60#define MLAB_LOG_COLOR_I "\033[0;32m"
61#define MLAB_LOG_COLOR_D
62#define MLAB_LOG_COLOR_V
63#define MLAB_LOG_RESET_COLOR "\033[0m"
64#define MLAB_LOG_FORMAT(letter, format) MLAB_LOG_COLOR_##letter #letter " (%u) %s: " format MLAB_LOG_RESET_COLOR "\n"
66#ifndef LOG_LOCAL_LEVEL
67#define LOG_LOCAL_LEVEL mlab::log_level::info
71#define LOG_LEVEL(level, tag, format, letter, ...) \
73 if (static_cast<int>(LOG_LOCAL_LEVEL) >= static_cast<int>(level) and \
74 ::mlab::check_log_level(tag, static_cast<::mlab::log_level>(level))) \
75 std::printf((MLAB_LOG_FORMAT(letter, format)), ::mlab::log_timestamp(), tag, ##__VA_ARGS__); \
78#define LOGE(tag, format, ...) LOG_LEVEL(mlab::log_level::error, tag, format, E, ##__VA_ARGS__)
79#define LOGW(tag, format, ...) LOG_LEVEL(mlab::log_level::warn, tag, format, W, ##__VA_ARGS__)
80#define LOGI(tag, format, ...) LOG_LEVEL(mlab::log_level::info, tag, format, I, ##__VA_ARGS__)
81#define LOGD(tag, format, ...) LOG_LEVEL(mlab::log_level::debug, tag, format, D, ##__VA_ARGS__)
82#define LOGV(tag, format, ...) LOG_LEVEL(mlab::log_level::verbose, tag, format, V, ##__VA_ARGS__)
84#define LOG_BUFFER_HEX_LEVEL(level, letter, tag, buffer, buff_len) \
86 if (static_cast<int>(LOG_LOCAL_LEVEL) >= static_cast<int>(level) and \
87 ::mlab::check_log_level(tag, static_cast<::mlab::log_level>(level))) \
88 ::mlab::log_buffer(MLAB_LOG_FORMAT(letter, "%s"), buffer, buff_len, ::mlab::log_timestamp()); \
91#define LOGE_BUFFER_HEX(tag, buffer, buff_len) LOG_BUFFER_HEX_LEVEL(mlab::log_level::error, E, tag, buffer, buff_len)
92#define LOGW_BUFFER_HEX(tag, buffer, buff_len) LOG_BUFFER_HEX_LEVEL(mlab::log_level::warn, W, tag, buffer, buff_len)
93#define LOGI_BUFFER_HEX(tag, buffer, buff_len) LOG_BUFFER_HEX_LEVEL(mlab::log_level::info, I, tag, buffer, buff_len)
94#define LOGD_BUFFER_HEX(tag, buffer, buff_len) LOG_BUFFER_HEX_LEVEL(mlab::log_level::debug, D, tag, buffer, buff_len)
95#define LOGV_BUFFER_HEX(tag, buffer, buff_len) LOG_BUFFER_HEX_LEVEL(mlab::log_level::verbose, V, tag, buffer, buff_len)
175 return static_cast<int>(l) <=>
static_cast<int>(r);
std::uint32_t log_timestamp()
Definition log.cpp:14
log_level get_log_level(std::string_view tag)
Definition log.cpp:67
bool check_log_level(std::string_view tag, log_level level)
Definition log.cpp:83
constexpr std::strong_ordering operator<=>(log_level l, log_level r)
Definition log.hpp:174
log_level
Definition log.hpp:46
void log_buffer(const char *format, std::uint32_t timestamp, void const *buffer, std::size_t buffer_length)
Definition log.cpp:17
void set_log_level(std::string_view tag, log_level level)
Definition log.cpp:75
A utility class to contextually enable/disable some of ESP32 log levels. This class is RAII,...
Definition log.hpp:111
bool is_suppressed
Definition log.hpp:125
suppress_log(suppress_log const &)=delete
void restore()
Definition log.cpp:116
~suppress_log()
Definition log.cpp:125
void suppress()
Definition log.cpp:107
std::vector< std::pair< const char *, log_level > > tag_log_lev
Definition log.hpp:115
log_level min_level
Definition log.hpp:120
suppress_log & operator=(suppress_log const &other)=delete