Linux内核打印级别
在编写Linux内核驱动时,通常使用的打印函数是 printk 函数,它相比于用户空间的打印函数 printf 最大的区别就是 printk 函数需要指定打印级别,以控制内核的打印信息。例如只有比控制台当前打印级别优先级高的打印信息才可以被打印到控制台。(注:打印级别越小优先级越高)
以下是 printk 的打印级别:
- #define KERN_EMERG “<0>” 通常是系统崩溃前的信息
- #define KERN_ALERT “<1>” 需要立即处理的消息
- #define KERN_CRIT “<2>” 严重情况
- #define KERN_ERR “<3>” 错误情况
- #define KERN_WARNING “<4>” 有问题的情况
- #define KERN_NOTICE “<5>” 注意信息
- #define KERN_INFO “<6>” 普通消息
- #define KERN_DEBUG “<7>” 调试信息
查看打印级别
cat /proc/sys/kernel/printk
结果如下:
上图中,从左到右依次对应当前控制台日志级别、默认消息日志级别、 最小的控制台级别、默认控制台日志级别。
- 控制台日志级别:优先级高于该值的消息将被打印至控制台
- 默认的消息日志级别:将用该优先级来打印没有优先级的消息
- 最小的控制台日志级别:控制台日志级别可被设置的最小值(最高优先级)
- 默认的控制台日志级别:控制台日志级别的缺省值
设置内核打印级别
echo 4 4 1 7 > /proc/sys/kernel/printk