温馨提示:这篇文章已超过849天没有更新,请注意相关的内容是否还可用!
LOG攻略 - Linux SDK
如何开启串口打印?
void log_func(int level, const char* module, int line, const char* message) { if (level <= g_log_level) //输出指定级别的log printf("%s\n", message); }int main(int argc, char* argv[]) { //读取 log 级别配置 g_log_level = get_setting("log_level"); //设置 log 输出函数 tx_set_log_func(log_func); //...}
LOG太多怎么办?
有些伙伴反馈
如果您不设置级别,确实是挺多的,尤其是在开启音视频功能的时候,那么怎么解决呢?
“你们log输出的太多了,满屏都是,烦人!”
如果您不设置级别,确实是挺多的,尤其是在开启音视频功能的时候,那么怎么解决呢?
SDK内部的log是分级别输出的,一共有如下的四个级别:
level | 数值 | 说明 |
---|---|---|
error | 1 | 错误 |
warning | 2 | 警告 |
notice | 3 | 信息 |
debug | 4 | 调试 |
所以我们非常推荐您像最开始的那段代码一样,设置一个过滤级别,并且将这个级别设置在全局配置项里,这样平时就可以将 g_log_level 设置为 0 , 也就是不开启SDK的内部log。而一旦遇到问题,或者需要QQ物联团队帮助您解决的时候,就可以将 g_log_level 设置为指定的级别,将详细的信息输出出来。
LOG存哪里了?
log的默认存储目录是在 app_path 目录下, 这里我们不会存储 debug 级别的log, 同时,log的存储空间会限制在app_path_capicity以内,所以不用担心我们的log会把可用的flash空间占满。
于此同时,如果您对flash的擦写次数有担忧,那么推荐您将app_path设置在ramdisk区域,只是如果这样,掉电或者重启以后,log所记录的信息都将被丢弃,所以更加推荐您在硬件
进入准发布阶段后再将app_path设置在ramdisk区域
。typedef struct _tx_init_path { //SDK会在该目录下写入保证正常运行必需的配置信息; //SDK对该目录的存储空间要求(最小大小:10K,建议大小:100K),SDK写入次数较少,读取次数较多 char * system_path; unsigned int system_path_capicity; //SDK会在该目录下写入运行过程中的异常错误信息 //SDK对该目录的存储空间要求较大(最小大小:300K,建议大小:1M),SDK写入次数较多,读取次数较少 char * app_path; unsigned int app_path_capicity; //SDK会在该目录下写入临时文件 char * temp_path; unsigned int temp_path_capicity; } tx_init_path;
LOG能不能不存?
SDK 1.3 以及之前的版本中,如果您通过 tx_set_log_func 设置了 log_func, 我们就不会再执行log存储了,因为这个时候我们相信您已经接管了log的输出工作。
但是我们发现种设计风格比较奇怪:
所以SDK 1.4 以及之后的版本,我们会在 tx_set_log_func 中预留参数供您明确指定允不允许我们存储log文件。
怎么读懂LOG?
目前我们的log在文案上还非常粗糙,很多地方都用词不易读懂,在SDK 1.4 版本中我们会对log进行一次文案上的调整,争取做到简单、通俗、易懂。
到时会输出一份log阅读攻略,敬请您期待。
免责声明:本文来自QQ物联,不代表0oD三一o0的观点和立场,如有侵权请联系本平台处理。
发表评论