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可以将输出的消息显示在控制台上

posted @ 2020-04-30 10:55  蒲城小农  阅读(587)  评论(0)    收藏  举报