本文以C Link SDK中的Demo文件./demos/logpost_basic_demo.c为例,介绍如何调用Link SDK的API,以支持设备向物联网平台上报本地日志。
背景信息
步骤一:初始化
步骤二:配置功能
调用aiot_logpost_setopt,创建LogPost
客户端实例,并初始化默认参数。
步骤三:发送请求
调用aiot_logpost_send,根据上一步配置的参数,向物联网平台发送请求,以上报业务相关日志。
上报日志时,需注意:
-
上报的日志消息的数据结构类型为aiot_logpost_msg_t。
-
上报的日志消息的Alink格式,请参见设备日志上报的Alink格式。
-
示例代码向物联网平台上报日志消息为
log in while(1)
。
void demo_send_log(void *handle, char *log)
{
int32_t res = 0;
aiot_logpost_msg_t msg;
memset(&msg, 0, sizeof(aiot_logpost_msg_t));
msg.timestamp = 0; /* 单位为ms的时间戳, 填写0则SDK将使用当前的时间戳 */
msg.loglevel = AIOT_LOGPOST_LEVEL_DEBUG; /* 日志级别 */
msg.module_name = "APP"; /* 日志对应的模块 */
msg.code = 200; /* 状态码 */
msg.msg_id = 0; /* 云端下行报文的消息标示符, 若无对应消息可直接填0 */
msg.content = log; /* 日志内容 */
res = aiot_logpost_send(handle, &msg);
if (res < 0) {
printf("aiot_logpost_send failed: -0x%04X\r\n", -res);
}
}
……
……
while (1) {
sleep(10);
/* TODO: 用户可取消注释上报日志到云端, 注意: 日志模块完成初始化后上报通道默认为关闭状态, 日志模块会在收到设备建连内部事件后立即同步云端控制台的开关状态。*/
demo_send_log(logpost_handle, "log in while(1)");
}
步骤四:退出程序
调用aiot_logpost_deinit,销毁LogPost
客户端实例,释放资源。
res = aiot_logpost_deinit(&logpost_handle);
if (res < STATE_SUCCESS) {
demo_mqtt_stop(&mqtt_handle);
printf("aiot_logpost_deinit failed: -0x%04X\r\n", -res);
return -1;
}