【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文件可以打印所有的内核信息