1. 关于打印等级

头文件:#include <logging/sys_log.h>

四个打印都有不同的等级定义,注意看数值!内核中源码定义如下。

关于Linux中的打印等级

在应用中,在不同的源文件中可自由设定等级,SYS_LOG_LEVEL进行重复宏定义即可

当前文件定义的打印等级要大于或等于系统设定的打印等级,打印才会生效。即比较数字,数字小则等级大,就能打印出来。

 

2. 关于打印信息的颜色显示

由该配置项来决定是否显示不同打印等级信息的不同颜色:CONFIG_SYS_LOG_SHOW_COLOR,这个配置项是系统定义的。用户只需要根据需求,进行配置即可。

关于Linux中的打印等级

 

用户可在工程配置文件中灵活地对配置项进行配置。

关于Linux中的打印等级

 

可以参照官方Demo或者别人的写法。

关于Linux中的打印等级

 

3. 例子

  1. 以一个新的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图形化配置,如下:

关于Linux中的打印等级

 

关于Linux中的打印等级

 

关于Linux中的打印等级

 

关于Linux中的打印等级

最后退出,记得保存修改。

编译下载固件,串口打印:

关于Linux中的打印等级

如果把系统的打印等级设置为3,则只有三个打印:

关于Linux中的打印等级

串口打印如下:

关于Linux中的打印等级

 

总结:当前文件定义的打印等级要大于或等于系统设定的打印等级,打印才会生效!!!!!!!

相关文章: