linux 内核调试 --- 控制台日志log输出等级 /proc/sys/kernel/printk
作用
通过读写/proc/sys/kernel/printk文件可读取和修改控制台的日志级别。如插入键鼠时弹出设备的输入输出msg信息等。
日志等级
内核通过printk() 输出的信息具有日志级别,日志级别是通过在printk() 输出的字符串前加一个带尖括号的整数来控制的,如printk("<6>Hello, world!\n");。内核中共提供了八种不同的日志级别,在 linux/kernel.h 中有相应的宏对应。
#define KERN_EMERG "<0>" /* systemis unusable */ #define KERN_ALERT "<1>" /* actionmust be taken immediately */ #define KERN_CRIT "<2>" /*critical conditions */ #define KERN_ERR "<3>" /* errorconditions */ #define KERN_WARNING "<4>" /* warning conditions */ #define KERN_NOTICE "<5>" /* normalbut significant */ #define KERN_INFO "<6>" /*informational */ #define KERN_DEBUG "<7>" /*debug-level messages */
未指定日志级别的printk() 采用的默认级别是DEFAULT_MESSAGE_LOGLEVEL,这个宏在kernel/printk.c 中被定义为整数4,即对应KERN_WARNING。 在宏定义中,数值越小,优先级越高,其紧急和严重程度就越高。
日志等级文件
在系统下通过读写/proc/sys/kernel/printk文件,来读取控制台的日志信息:
[root@localhost ~]# cat /proc/sys/kernel/printk 4 4 1 7
(1) 控制台日志级别:优先级高于该值的消息将被打印至控制台 (2) 缺省的消息日志级别:默认的printk消息优先级别,即printk(“hell world”)优先级为4 (3) 最低的控制台日志级别:控制台日志级别可能被设置的最小值 (4) 缺省的控制台级别:没有设置控制台日志级别,则使用该值
这四个值是在kernel/printk.c中被定义的:
int console_printk[4] = { DEFAULT_CONSOLE_LOGLEVEL, /* console_loglevel */ DEFAULT_MESSAGE_LOGLEVEL, /* default_message_loglevel */ MINIMUM_CONSOLE_LOGLEVEL, /* minimum_console_loglevel */ DEFAULT_CONSOLE_LOGLEVEL, /* default_console_loglevel */ };
设置日志信息等级
[root@localhost ~]# cat /proc/sys/kernel/printk 4 4 1 7 [root@localhost ~]# echo 8 > /proc/sys/kernel/printk [root@localhost ~]# cat /proc/sys/kernel/printk 8 4 1 7 [root@localhost ~]# echo 8 1 1 1 > /proc/sys/kernel/printk [root@localhost ~]# cat /proc/sys/kernel/printk 8 1 1 1
实例


浙公网安备 33010602011771号