Linux printk的日志级别和pr_debug
1. 查看日志级别
# cat /proc/sys/kernel/printk 7 4 1 7
四个数值分别表示。
- 控制台日志级别
- 默认消息日志级别(未明确指定日志级别的消息)
- 最小控制台日志级别
- 默认控制台日志级别
日志级别的定义在include/linux/kern_levels.h。数值越小,级别越高。当printk的日志级别高于控制台日志级别时,控制台打印日志。
#define KERN_EMERG KERN_SOH "0" /* system is unusable */ #define KERN_ALERT KERN_SOH "1" /* action must be taken immediately */ #define KERN_CRIT KERN_SOH "2" /* critical conditions */ #define KERN_ERR KERN_SOH "3" /* error conditions */ #define KERN_WARNING KERN_SOH "4" /* warning conditions */ #define KERN_NOTICE KERN_SOH "5" /* normal but significant condition */ #define KERN_INFO KERN_SOH "6" /* informational */ #define KERN_DEBUG KERN_SOH "7" /* debug-level messages */
2. 控制台打印所有级别日志
# echo 8 4 1 7 > /proc/sys/kernel/printk
3. 查看所有级别日志
除了将日志打印在控制台,还可以通过dmesg命令查看所有级别日志。如果系统配置好了syslogd或klogd,还可以通过/var/log/messages查看所有级别日志。
4. 使能pr_debug
使能pr_debug可以通过在对应Makefile中增加如下语句实现。
EXTRA_CFLAGS += -DDEBUG