TuyaOS
日志服务

涂鸦TuyaOS提供按照模块、分级别的日志记录能力,开发者可以根据自己的需求,选择合适的日志级别进行日志记录输出,同时也可以设置默认输出的日志级别,控制只输出默认输出日志级别以上的日志。涂鸦TuyaOS的日志模块,支持灵活的添加输出的出口,开发者可以根据自己的需求,将日志输出到串口、文件或者是网络上。

涂鸦TuyaOS同时也支持在线日志的模式,开发者可以在涂鸦IoT平台上,通过设备命令,设置日志的级别和输出出口,如果输出出口是MQTT,并且网络正常,客户即可在涂鸦IoT平台上看到设备日志信息。

日志级别信息

typedef enum {
TAL_LOG_LEVEL_ERR, // error information
TAL_LOG_LEVEL_WARN, // warnning information
TAL_LOG_LEVEL_NOTICE, // notice information
TAL_LOG_LEVEL_INFO, // information
TAL_LOG_LEVEL_DEBUG, // debug information , should delete in release version
TAL_LOG_LEVEL_TRACE, // trace information , should delete in release version
TAL_LOG_LEVEL_E
Definition of log level
Definition: tal_log.h:26

接口描述

日志输出宏

#define TAL_TAL_PR_ERR(fmt, ...) // error information
#define TAL_PR_WARN(fmt, ...) // warnning information
#define TAL_PR_NOTICE(fmt, ...) // notice information
#define TAL_PR_INFO(fmt, ...) // information
#define TAL_TAL_PR_DEBUG(fmt, ...) // debug information , should delete in release version
#define TAL_PR_TRACE(fmt, ...) // trace information , should delete in release version

设置日志输出级别

OPERATE_RET tal_log_set_manage_attr(CONST TAL_LOG_LEVEL_E level);
OPERATE_RET tal_log_set_manage_attr(CONST TAL_LOG_LEVEL_E level)
set global log level.

获取日志输出级别

OPERATE_RET tal_log_get_log_manage_attr(TAL_LOG_LEVEL_E *level)
get global log level.

添加日志输出

OPERATE_RET tal_log_add_output_term(CONST CHAR_T *name, CONST TAL_LOG_OUTPUT_CB term);
OPERATE_RET tal_log_add_output_term(CONST CHAR_T *name, CONST TAL_LOG_OUTPUT_CB term)
add one output terminal.

删除日志输出

VOID tal_log_del_output_term(CONST CHAR_T *name);
VOID tal_log_del_output_term(CONST CHAR_T *name)
delete one output terminal.

使用示例

VOID log_output_to_file(IN CONST CHAR_T *str)
{
uFILE * fp = NULL;
// open file
fp = ufopen("log", "w+");
if(NULL == fp) {
TAL_PR_ERR("log uf file can't open and write data!");
return ;
}
// write
uiWriteCnt = ufwrite(fp, str, strlen(str));
if(uiWriteCnt != strlen(str)) {
TAL_PR_ERR("log uf file write data error!");
return ;
}
// close
ufclose(fp);
return;
}
// 在完成系统初始化之后调用此接口测试内存分配
VOID test_logoutput()
{
tal_log_set_manage_attr(TAL_LOG_LEVEL_DEBUG);
TAL_PR_DEBUG("a debug log");
tal_log_set_manage_attr(TAL_LOG_LEVEL_NOTICE);
TAL_PR_DEBUG("another debug log");
TAL_PR_DEBUG("an error log");
// 新增一个新的output
tal_log_add_output_term("filelog", log_output_to_file);
TAL_PR_DEBUG("another debug log");
TAL_PR_DEBUG("another error log");
return;
}
uFILE * ufopen(IN CHAR_T *filepath, IN CHAR_T *mode)
open a unique file
VOID uFILE
unique file handle
Definition: tuya_uf_db.h:22
OPERATE_RET ufclose(IN uFILE *fd)
close a unique file
UINT_T ufwrite(IN uFILE *fd, IN UCHAR_T *buf, IN CONST UINT_T len)
write to unique file