linux的kernel的打印优先级
在linux中我们使用printk进行打印,printk根据日志级别对消息进行分类,一共有8个消息基本,这8个消息级别定义在include/linux/kern_levels.h
1 #define KERN_EMERG KERN_SOH "0" /* system is unusable */ 2 #define KERN_ALERT KERN_SOH "1" /* action must be taken immediately */ 3 #define KERN_CRIT KERN_SOH "2" /* critical conditions */ 4 #define KERN_ERR KERN_SOH "3" /* error conditions */ 5 #define KERN_WARNING KERN_SOH "4" /* warning conditions */ 6 #define KERN_NOTICE KERN_SOH "5" /* normal but significant condition */ 7 #define KERN_INFO KERN_SOH "6" /* informational */ 8 #define KERN_DEBUG KERN_SOH "7" /* debug-level messages */
一个定义了8个级别,其中0的优先级最高,7的优先级最低,
如果要设置消息级别,参考如下示例
printk(KERN_EMERG"this is a test\n");
上述代码中就是设置"this is a test\n"这行的消息级别设置为KERN_EMERG。
我们默认使用printk并没有设个这个消息级别是因为使用的是不显式的设置消息级别,printk采用默认级别MESSAGE_LOGLEVEL_DEFAULT, MESSAGE_LOGLEVEL_DEFAULT默认为4
而在include/linux/printk.h在的宏定义CONSOLE_LOGLEVEL_DEFAULT,定义如下
#define CONSOLE_LOGLEVEL_DEFAULT 7
CONSOLE_LOGLEVEL_DEFAULT 控制着哪些级别的消息可以显示在控制台上,此宏默认为7,意味着只有优先级高于7的消息才能显示在控制台上
printk默认消息级别为4,4的级别高于7.所以直接使用printk可以将输出的消息显示在控制台上

浙公网安备 33010602011771号