printk(KERN_DEBUG "Here I am: %s:%i\n", __FILE__, __LINE__);
printk(KERN_CRIT "I'm trashed; giving up on %p\n", ptr);
有 8 种可能的记录字串, 在头文件 <linux/kernel.h> 里定义; 我们按照严重性递减的顺序列出它们:
- KERN_EMERG
-
用于紧急消息, 常常是那些崩溃前的消息.
- KERN_ALERT
-
需要立刻动作的情形.
- KERN_CRIT
-
严重情况, 常常与严重的硬件或者软件失效有关.
- KERN_ERR
-
用来报告错误情况; 设备驱动常常使用 KERN_ERR 来报告硬件故障.
- KERN_WARNING
-
有问题的情况的警告, 这些情况自己不会引起系统的严重问题.
- KERN_NOTICE
-
正常情况, 但是仍然值得注意. 在这个级别一些安全相关的情况会报告.
- KERN_INFO
-
信息型消息. 在这个级别, 很多驱动在启动时打印它们发现的硬件的信息.
- KERN_DEBUG
-
用作调试消息.
每个字串( 在宏定义扩展里 )代表一个在角括号中的整数. 整数的范围从 0 到 7, 越小的数表示越大的优先级.如下:
<6>-----------------w1_gpio_probe.------------------
<7>w1_master_driver w1 bus master: Hotplug event for master w1_bus_master1, bus_id=w1 bus master.
可以通过文本文件 /proc/sys/kernel/printk 读写控制台记录级别. 这个文件有 4 个整型值: 当前记录级别, 适用没有明确记录级别的消息的缺省级别, 允许的最小记录级别, 以及启动时缺省记录级别. 写一个单个值到这个文件就改变当前记录级别成这个值; 因此, 例如, 你可以使所有内核消息出现在控制台, 通过简单地输入:
# echo 8 > /proc/sys/kernel/printk
读 /proc/kmsg 可以看到所以信息