作用
通过读写
/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
代码语言:javascript复制(1) 控制台日志级别:优先级高于该值的消息将被打印至控制台。
(2) 缺省的消息日志级别:将用该值来打印没有优先级的消息。
(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 */
};
设置日志信息等级:
代码语言:javascript复制[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