atiny_log | LiteOS 物联网操作系统中的日志打印组件使用分享
【摘要】 1. 为什么使用日志打印组件在使用LiteOS做项目时,经常使用串口输出调试信息以便于定位问题,查看系统运行情况。在通常情况下,大多数人都会直接使用 printf 函数输出,但是printf函数只能输出我们编写的信息,无法输出更多的信息来帮助我们定位问题,所以LiteOS提供了一个atiny_log日志打印组件,基于printf,比printf更有效率。2. atiny_log组件atiny...
1. 为什么使用日志打印组件
在使用LiteOS做项目时,经常使用串口输出调试信息以便于定位问题,查看系统运行情况。
在通常情况下,大多数人都会直接使用 printf 函数输出,但是printf函数只能输出我们编写的信息,无法输出更多的信息来帮助我们定位问题,所以LiteOS提供了一个atiny_log日志打印组件,基于printf,比printf更有效率。
2. atiny_log组件
atiny_log组件的源码非常简单,只有两个文件:
atiny_log.h
:组件定义;atiny_log.c
:组件实现;
在使用的时候只需要包含头文件<atiny_log.h>
即可。
atiny_log组件的使用非常简单,两点:
① 如果你想写printf,请用
ATINY_LOG
替换;② 保持第一个参数为日志输出等级,其余参数和printf相同;
日志输出等级支持哪些呢?在atiny_log.h
文件中已枚举定义:
typedef enum{ LOG_DEBUG = 0, LOG_INFO, LOG_WARNING, LOG_ERR, LOG_FATAL, LOG_MAX} atiny_log_e;
其中提供了前五种选择,LOG_MAX
不是日志输出等级。
3. atiny_log组件使用示例
编写一个测试文件atiny_log_test.c
,编写以下内容:
#include <osal.h>#include <atiny_log.h>static int atiny_log_test_entry(){ /* 设置系统当前日志等级为最低 */ atiny_set_log_level(LOG_DEBUG); /* 开始测试 */ ATINY_LOG(LOG_DEBUG, "This is a LOG_DEBUG Test!\r\n"); ATINY_LOG(LOG_INFO, "This is a LOG_INFO Test!\r\n"); ATINY_LOG(LOG_WARNING, "This is a LOG_WARNING Test!\r\n"); ATINY_LOG(LOG_ERR,"This is a LOG_ERR Test!\r\n"); ATINY_LOG(LOG_FATAL, "This is a LOG_FATAL Test!\r\n"); return 0;}int standard_app_demo_main(){ osal_task_create("atiny_log_test",atiny_log_test_entry,NULL,0x400,NULL,12); return 0;}
编译,下载到开发板中,串口输出如下:
可以看到除了正常和使用printf相同的输出之外,还加上了一些日志信息,分别为:
该条日志的日志等级;
当前系统运行时间;
该条日志所在的文件以及该行所在位置;
可以看到,日志输出的行号和实际文件中的行号保持一致,这样一来,在哪儿出现问题一目了然,非常方便:
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)