【Linux-驱动】printk的打印级别

级别:

日志级别用宏表示,日志级别宏展开为一个字符串,在编译是由预处理器将它和消息

本文拼接成一个字符串,因此printk函数中日志级别宏和格式字符串间不能有逗号。

printk的日志级别定义在 /include/linux/kernel.h 中:

#define    KERN_EMERG     "<0>"    /* system is unusable            */
#define    KERN_ALERT     "<1>"    /* action must be taken immediately    */
#define    KERN_CRIT      "<2>"    /* critical conditions            */
#define    KERN_ERR       "<3>"    /* error conditions            */
#define    KERN_WARNING   "<4>"    /* warning conditions            */
#define    KERN_NOTICE    "<5>"    /* normal but significant condition    */
#define    KERN_INFO      "<6>"    /* informational            */
#define    KERN_DEBUG     "<7>"    /* debug-level messages            */

日志级别的范围"0~7",没有指定日志级别的printk语句默认采用的级别是

DEFAULT_MESSAGE_LOGLEVEL,其定义列出如下(在/kernel/printk.c中):

#define DEFAULT_MESSAGE_LOGLEVEL  4

当printk语句采用的级别高于4时(该宏表示的数字小于4)将在终端打印。

通过如下命令可以让所有打印输出到终端:

echo 8 > /proc/sys/kernel/printk

dmesg命令 通过查看/proc/kmsg文件可以打印所有的内核信息