1. 关于打印等级
头文件:#include <logging/sys_log.h>
四个打印都有不同的等级定义,注意看数值!内核中源码定义如下。
在应用中,在不同的源文件中可自由设定等级,对SYS_LOG_LEVEL进行重复宏定义即可。
当前文件定义的打印等级要大于或等于系统设定的打印等级,打印才会生效。即比较数字,数字小则等级大,就能打印出来。
2. 关于打印信息的颜色显示
由该配置项来决定是否显示不同打印等级信息的不同颜色:CONFIG_SYS_LOG_SHOW_COLOR,这个配置项是系统定义的。用户只需要根据需求,进行配置即可。
用户可在工程配置文件中灵活地对配置项进行配置。
可以参照官方Demo或者别人的写法。
3. 例子
- 以一个新的hello world工程为例:把系统打印等级配置项设为4
文件:Main.c
| #include <zephyr.h> #include <misc/printk.h>
#define SYS_LOG_DOMAIN "main" //打印时,显示的前缀
/* #define SYS_LOG_LEVEL 4 */
/* 为了能更灵活地进行配置,把打印等级重复宏定义为一个配置项 */ #define SYS_LOG_LEVEL CONFIG_SYS_USER_LOG_DEFAULT_LEVEL
#include <logging/sys_log.h>
void main(void) { printk("Hello World! %s\n", CONFIG_ARCH); SYS_LOG_ERR("SYS_LOG_ERR:%d",SYS_LOG_LEVEL); SYS_LOG_INF("SYS_LOG_INF:%d",SYS_LOG_LEVEL); SYS_LOG_WRN("SYS_LOG_WRN:%d",SYS_LOG_LEVEL); SYS_LOG_DBG("SYS_LOG_DBG:%d",SYS_LOG_LEVEL);
} |
对于CONFIG_SYS_USER_LOG_DEFAULT_LEVEL,是用户自由定义的,一般定义在Kconfig文件中,所以它其实是一个普通的配置项。可以直接修改工程配置文件(prj.conf)中配置项CONFIG_SYS_USER_LOG_DEFAULT_LEVEL的值(当然,定义在Kconfig中的时候,它有一个默认值),也可以通过make menuconfig图形化配置,如下:
最后退出,记得保存修改。
编译下载固件,串口打印:
如果把系统的打印等级设置为3,则只有三个打印:
串口打印如下:
总结:当前文件定义的打印等级要大于或等于系统设定的打印等级,打印才会生效!!!!!!!