【Linux】printk优先级设置

1. printk 优先级分类

  printk 是内核态打印函数。我们可以通过附加不同的“优先级”,对信息分类。

1.1 优先级列表

  目前共有 8 种优先级,按优先级从高到低顺序排列如下:

1 #define KERN_EMERG     0    /*紧急事件消息,系统崩溃之前提示,表示系统不可用*/
2 #define KERN_ALERT     1    /*报告消息,表示必须立即采取措施*/
3 #define KERN_CRIT      2    /*临界条件,通常涉及严重的硬件或软件操作失败*/
4 #define KERN_ERR       3    /*错误条件,驱动程序常用KERN_ERR来报告硬件的错误*/
5 #define KERN_WARNING   4    /*警告条件,对可能出现问题的情况进行警告*/
6 #define KERN_NOTICE    5    /*正常但又重要的条件,用于提醒*/
7 #define KERN_INFO      6    /*提示信息,如驱动程序启动时,打印硬件信息*/
8 #define KERN_DEBUG     7    /*调试级别的消息*/

2. printk 优先级配置

2.1 /proc/sys/kernel/printk

  Linux 中,printk 优先级设置在 /proc/sys/kernel/printk 中。可以通过以下命令,查看相关配置:

1 $ cat /proc/sys/kernel/printk
2 4    4    1    7

2.1.1 参数 1

  控制台日志级别:优先级高于该值的消息将被打印至控制台。

2.1.2 参数 2

  缺省的消息日志级别:将用该值来打印没有优先级的消息。

2.1.3 参数 3

  最低的控制台日志级别:控制台日志级别可能被设置的最小值。

2.1.4 参数 4

  缺省的控制台:控制台日志级别的缺省值。

3. /proc/sys/kernel/printk 默认值修改

  /proc/sys/kernel/printk 的默认值在 linuxSrc/include/linux/printk.h 中定义:

1 #define console_loglevel             (console_printk[0])
2 #define default_message_loglevel     (console_printk[1])
3 #define minimum_console_loglevel     (console_printk[2])
4 #define default_console_loglevel     (console_printk[3])

  console_printk 的定义在 linuxSrc/kernel/printk/printk.c 中:

1 int console_printk[4] = {
2     CONSOLE_LOGLEVEL_DEFAULT,       /* console_loglevel */
3     MESSAGE_LOGLEVEL_DEFAULT,       /* default_message_loglevel */
4     CONSOLE_LOGLEVEL_MIN,           /* minimum_console_loglevel */
5     CONSOLE_LOGLEVEL_DEFAULT,       /* default_console_loglevel */
6 };
原文地址:https://www.cnblogs.com/murongmochen/p/14324648.html