zl程序教程

您现在的位置是:首页 >  .Net

当前栏目

LVGL 日志

2023-02-18 16:30:03 时间

一、启动日志

在 lv_conf.h 中将 LV_USE_LOG 设置为 1,如下图所示:

二、日志级别

在文件 lvgl/src/misc/lv_log.h 中定义了日志等级,等级是从小到大,所以 LV_LOG_LEVEL_USER 的等级最高

#define LV_LOG_LEVEL_TRACE 0 /**< 记录所有信息*/
#define LV_LOG_LEVEL_INFO  1 /**< 记录重要事件*/
#define LV_LOG_LEVEL_WARN  2 /**< 记录是否发生了警告事件*/
#define LV_LOG_LEVEL_ERROR 3 /**< 记录错误信息,当系统可能发生故障时或致命错*/
#define LV_LOG_LEVEL_USER  4 /**< 来自用户的自定义日志*/
#define LV_LOG_LEVEL_NONE  5 /**< 不要记录任何东西*/
#define _LV_LOG_LEVEL_NUM  6 /**< 日志级别数*/

通过设置 LV_LOG_LEVEL 日志级别过滤日志信息,只有大于等于设置过滤日志级别的信息才能输出,如下图所示:

三、日志输出选择

/*1: Print the log with 'printf';
*0: User need to register a callback with `lv_log_register_print_cb()`*/
#define LV_LOG_PRINTF 0

通过设置 LV_LOG_PRINTF 的值设置日志输入模式,设置为 0 时,通过系统的 printf 函数输出,设置为 1 时,通过自定义的数据函数进行输出。
通过源码,查看 LVGL 日志输出方式,如下图所示:

使用自定义输出时,使用 lv_log_register_print_cb() 函数注册日志回调函数。

/**
 * @brief 日志输出回调函数
 * 
 * @param buf 日志信息
 */
void esp32_log_cb(const char * buf)
{
    printf(buf);
}

/* 注册日志输出回调函数 */
lv_log_register_print_cb(esp32_log_cb);

回调函数指针,如下图所示:

四、日志使用

从下图中可以看出日志输出的等级,如下图所示:

通过使用日志输出模块

LV_LOG_TRACE(...)
LV_LOG_INFO(...)
LV_LOG_WARN(...)
LV_LOG_ERROR(...)
LV_LOG_USER(...)

注意:使用方式和 printf 函数一样