Log Service
The log service uses a listener-based design pattern, supporting multiple listeners to receive log messages.
Log Levels
typedef enum {
EOS_LOG_LEVEL_DEBUG = 0, // Debug level
EOS_LOG_LEVEL_INFO, // Info level
EOS_LOG_LEVEL_WARN, // Warning level
EOS_LOG_LEVEL_ERROR // Error level
} eos_log_level_t;
Log Listeners
Listener Callback Function
typedef void (*eos_log_listener_cb_t)(
eos_log_level_t level,
const char *buf,
size_t len,
void *user
);
Listener Flags
#define EOS_LOG_FLAG_SYSTEM (1 << 0) // System listener, cannot be deleted
Add Log Listener
eos_log_listener_id_t eos_log_add_listener(
eos_log_listener_cb_t cb,
eos_log_level_t min_level,
uint32_t flags,
void *user
);
Remove Log Listener
eos_result_t eos_log_remove_listener(eos_log_listener_id_t id);
Set Listener Level
eos_result_t eos_log_set_level(eos_log_listener_id_t id, eos_log_level_t level);
Log Output
Output Log
void eos_log(eos_log_level_t level, const char *fmt, ...);
Log Macros
Convenient log output macros (when EOS_LOG_DISABLE is not defined):
#define EOS_LOG_D(fmt, ...) // Debug level
#define EOS_LOG_I(fmt, ...) // Info level
#define EOS_LOG_W(fmt, ...) // Warning level
#define EOS_LOG_E(fmt, ...) // Error level
If EOS_LOG_TAG is defined, log messages will include the tag prefix.
Colorful Log
When EOS_LOG_USE_COLOR is enabled, color output is supported:
#define EOS_LOG_COLOR_RESET "\033[0m"
#define EOS_LOG_COLOR_RED "\033[31m"
#define EOS_LOG_COLOR_GREEN "\033[32m"
#define EOS_LOG_COLOR_YELLOW "\033[33m"
#define EOS_LOG_COLOR_BLUE "\033[34m"
#define EOS_LOG_COLOR_CYAN "\033[36m"
Pointer Check Macros
Check Pointer and Return
#define EOS_CHECK_PTR_RETURN(ptr)
If pointer is NULL, logs error and returns.
Check Pointer and Return Specified Value
#define EOS_CHECK_PTR_RETURN_VAL(ptr, ret_val)
Check Pointer, Free, and Return
#define EOS_CHECK_PTR_RETURN_FREE(ptr, free_var)
#define EOS_CHECK_PTR_RETURN_VAL_FREE(ptr, ret_val, free_var)
Assertion Macros
When EOS_USE_ASSERT is enabled:
#define EOS_ASSERT(expr)
If expression is false, logs error and executes assertion handler.
Debug Helper
Print LVGL object coordinate information:
#define EOS_DEBUG_PRINT_POS(obj)