跳转至

Linux的loglevel

linux内核的loglevel日志等级

[r@r-pc ~]$ cat /proc/sys/kernel/printk
1    4    1    4

这4个值在kernel/printk/printk.c 中定义:

  • 控制台日志级别DEFAULT_CONSOLE_LOGLEVEL:打印至控制台的日志等级

  • 默认的消息日志级别DEFAULT_MESSAGE_LOGLEVEL:将用该优先级来打印没有优先级的消息

  • 最低的控制台日志级别MINIMUM_CONSOLE_LOGLEVEL:控制台日志级别可被设置的最小值(最高优先级)

  • 默认的控制台日志级别DEFAULT_CONSOLE_LOGLEVEL:控制台日志级别的缺省值

动态修改:

echo "7 4 1 7" > /proc/sys/kernel/printk

调试驱动时常用的配置:

# cat /proc/sys/kernel/printk
7    4    1    7

修改内核配置

看不到关注的LOG时,注意查看一下这些内核配置

  • DEFAULT_CONSOLE_LOGLEVEL:打印到console上的默认级别
  • DEFAULT_MESSAGE_LOGLEVEL:默认信息等级,没有声明loglevel的API就用这个等级

动态修改CONSOLE_LOGLEVEL

u-boot传参修改,参数bootargs加上:

loglevel=3

sysfs里修改:

echo 3 > /proc/sys/kernel/printk

Linux内核loglevel值的具体定义

定义在./include/linux/kern_levels.h中:

#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 */