SDK日志抓取和保存
更新日期:2025/2/13
简述
目前SDK提供的库,分正式版本和调试版本,区别在于库名是否带 'T',比如libIOTCAPIs.so和libIOTCAPIsT.so。
其中带'T'的版本,为调试版本。所以如果需要抓取SDK的日志,必须换成'T'库。
目前SDK每个模块都有提供对应的接口来设定日志的相关参数,如:路径和级别。
使用
具体的使用方式,建议在模块初始化之前调用,此处主要以IOTCAPIs模块为例:
LogAttr logAttr; memset(&logAttr, 0, sizeof(logAttr)); logAttr.path = "./log_iotc.txt";//设定日志路径,须包含文件名。如路径为NULL,则为关闭日志。 logAttr.log_level = LEVEL_VERBOSE;//LEVEL_VERBOSE、LEVEL_DEBUG、LEVEL_INFO、LEVEL_WARNING、LEVEL_ERROR、LEVEL_SILENCE,越往后,日志越粗略 logAttr.file_max_size = 0; //单位为字节,0为无限制 logAttr.file_max_count = 0; //0为无限制 IOTC_Set_Log_Attr(logAttr);
其他模块类似的接口为:RDT_Set_Log_Attr,AV_Set_Log_Attr,TUTK_Set_Log_Attr,P2PTunnel_Set_Log_Attr,Nebula_Set_Log_Attr。(API命名{ModuleName_Set_Log_Attr},用到哪些模块,就要调用对应的模块的接口设定)
LogAttr logAttr; memset(&logAttr, 0, sizeof(logAttr)); logAttr.log_level = LEVEL_VERBOSE;//LEVEL_VERBOSE、LEVEL_DEBUG、LEVEL_INFO、LEVEL_WARNING、LEVEL_ERROR、LEVEL_SILENCE,越往后,日志越粗略 logAttr.file_max_size = 0; //单位为字节,0为无限制 logAttr.file_max_count = 0; //0为无限制 logAttr.path = "./log_global.txt";//设定global的日志 TUTK_Set_Log_Attr(logAttr); logAttr.path = "./log_rdt.txt";//如果有用到RDTAPIs,使用此方式开日志,一般需要同时开IOTC,GLOBAL的日志 RDT_Set_Log_Attr(logAttr); logAttr.path = "./log_av.txt";//如果有用到AVAPIs,使用此方式开日志,一般同时需要开IOTC,GLOBAL的日志 AV_Set_Log_Attr(logAttr); logAttr.path = "./log_tunnel.txt";//如果有用到P2PTunnelAPIs,使用此方式开日志,一般需要同时开IOTC跟RDT,GLOBAL的日志 P2PTunnel_Set_Log_Attr(logAttr);
特别注意: IOS平台因为所有的库都封装在一起,所以必须要调用上面对应的接口设定路径。
FAQ
T库是否可以用以正式环境?
可以,默认可以通过设定日志级别设定为LEVEL_SILENCE,即可以不产生日志,等需要产生日志的时候,再进行打开。
SDK的日志可以用以排查哪些问题?
- 设备掉线问题,只需要设备端的日志。
- APP连线问题,一般需要APP端和设备端的日志。
- 数据传输不顺畅问题,一般需要APP端和设备端的日志。
- 一些特殊的API报错,视具体情况而定。
- 崩溃问题,一般只需要本端日志。
使用模块:IOTCAPIs+AVAPIs
问题|日志 | 客户端 | 设备端 | ||||
---|---|---|---|---|---|---|
IOTCAPIs | AVAPIs | GlobalAPIs | IOTCAPIs | AVAPIs | GlobalAPIs | |
设备掉线 | √ | |||||
设备在线,IOTC无法连接 | √ | √ | ||||
IOTC连线成功,AV通道创建失败 | √ | √ | √ | √ | ||
排查客户端端口占用 | √ | √ | √ | |||
排查设备端端口占用 | √ | √ | √ |