更新时间:2023-12-19 08:36:58下载pdf
设备日志可以记录设备的运行状态,及时记录问题点以及关键信息,方便开发人员调试以及定位问题。
由于每个模组上的资源不一样,并不会打开所有功能,您需要检查 tuya_iot_config.h
确认如下宏定义是否定义:
#define ENABLE_LOG 1
tal_log.h
日志输出接口需要在 系统服务初始化 接口之后调用。
宏函数 | 说明 |
---|---|
TAL_PR_TRACE (fmt, …) | 追踪日志 |
TAL_PR_DEBUG (fmt, …) | 调试日志,固件开发或者排查问题时的日志 |
TAL_PR_INFO (fmt, …) | 信息日志 |
TAL_PR_NOTICE (fmt, …) | 关键信息 |
TAL_PR_WARN (fmt, …) | 警告日志,不太重要的、具有 可修复性 的错误时输出的日志 |
TAL_PR_ERR (fmt, …) | 错误日志,发生严重的、不可修复 的错误时输出的日志 |
参数 | 描述 |
---|---|
fmt | 格式化参数 |
… | 可变参数 |
宏函数 | 说明 |
---|---|
TAL_PR_HEXDUMP_TRACE (title, buf, size) | 追踪日志 |
TAL_PR_HEXDUMP_DEBUG (title, buf, size) | 调试日志,固件开发或者排查问题时的日志 |
TAL_PR_HEXDUMP_INFO (title, buf, size) | 信息日志 |
TAL_PR_HEXDUMP_NOTICE (title, buf, size) | 关键信息 |
TAL_PR_HEXDUMP_WARN (title, buf, size) | 警告日志,不太重要的、具有 可修复性 的错误时输出的日志 |
TAL_PR_HEXDUMP_ERR (title, buf, size) | 错误日志,发生严重的、不可修复 的错误时输出的日志 |
参数 | 描述 |
---|---|
title | 自定义标签 |
buf | 需要打印的缓存 |
size | 缓存的大小 |
一旦设置某个级别后,低于这个级别的日志将不再被打印。
TAL_LOG_LEVEL_ERR
最高级别TAL_LOG_LEVEL_TRACE
最低级别该接口适用于涂鸦默认模块的打印,对您自定义添加的模块打印无效。即该设置仅作用于 TAL_PR_XXX
和 TAL_PR_HEXDUMP_XXX
日志输出接口。
typedef enum {
TAL_LOG_LEVEL_ERR, //! 错误
TAL_LOG_LEVEL_WARN, //! 警告
TAL_LOG_LEVEL_NOTICE, //! 关键
TAL_LOG_LEVEL_INFO, //! 信息
TAL_LOG_LEVEL_DEBUG, //! 调试
TAL_LOG_LEVEL_TRACE, //! 追踪
} TAL_LOG_LEVEL_E;
/**
* @brief set global log level.
*
* @param[in] curLogLevel , log level
*
* @note This API is used for setting global log level.
*
* @return OPRT_OK on success. Others on error, please refer to tuya_error_code.h
*/
OPERATE_RET tal_log_set_manage_attr(CONST TAL_LOG_LEVEL_E level);
日志经过格式化后会回调用户注册的函数,具体的实现,您可以在这个函数自行处理。可以通过该接口实现用不同输出端(网络,文件等)输出日志的功能。
typedef VOID (*TAL_LOG_OUTPUT_CB)(IN CONST CHAR_T *str);
/**
* @brief add one output terminal.
*
* @param[in] name , terminal name
* @param[in] term , output function pointer
*
* @note This API is used for adding one output terminal.
*
* @return OPRT_OK on success. Others on error, please refer to tuya_error_code.h
*/
OPERATE_RET tal_log_add_output_term(CONST CHAR_T *name, CONST TAL_LOG_OUTPUT_CB term);
/**
* @brief delete one output terminal.
*
* @param[in] name , terminal name
*
* @note This API is used for delete one output terminal.
*
* @return NONE
*/
VOID tal_log_del_output_term(CONST CHAR_T *name);
您可以新增一个模块打印,方便在不同模块设置不同打印级别,上述 TAL_PR_XXX
则属于涂鸦自带的一个模块打印。
/**
* @brief add one module's log level
*
* @param[in] module_name, module name
* @param[in] logLevel, this module's log level
*
* @note This API is used for adding one module's log level.
*
* @return OPRT_OK on success. Others on error, please refer to tuya_error_code.h
*/
OPERATE_RET tal_log_add_module_level(CONST PCHAR_T module_name, CONST TAL_LOG_LEVEL_E level);
/**
* @brief add one module's log level
*
* @param[in] pModuleName, module name
* @param[in] logLevel, this module's log level
*
* @note This API is used for adding one module's log level.
*
* @return OPRT_OK on success. Others on error, please refer to tuya_error_code.h
*/
OPERATE_RET tal_log_set_module_level(CONST PCHAR_T module_name, TAL_LOG_LEVEL_E level);
/**
* @brief delete one module's log level
*
* @param[in] pModuleName, module name
*
* @note This API is used for deleting one module's log level.
*
* @return OPRT_OK on success. Others on error, please refer to tuya_error_code.h
*/
OPERATE_RET tal_log_delete_module_level(CONST PCHAR_T module_name);
日志输出宏 | 说明 |
---|---|
TAL_MPR_TRACE (module, fmt, …) | 追踪日志 |
TAL_MPR_DEBUG (module, fmt, …) | 调试日志,固件开发或者排查问题时的日志 |
TAL_MPR_INFO (module, fmt, …) | 信息日志 |
TAL_MPR_NOTICE (module, fmt, …) | 关键信息 |
TAL_MPR_WARN (module, fmt, …) | 警告日志,不太重要的、具有 可修复性 的错误时输出的日志 |
TAL_MPR_ERR (module, fmt, …) | 错误日志,发生严重的、不可修复 的错误时输出的日志 |
打印日志缓存大小默认 1024 Byte,超过部分不会打印。
打印接口带有程序锁,故打印接口不要用在中断函数中。
在异步删除线程时,请确保打印接口已经完成调用。
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈