Skip to main content

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)