Linux内核中如何修改printk等级

描述

printk等级

路径:include/linux/kern_levels.h

#define KERN_EMERG KERN_SOH "0"  /* 最高输出等级,系统可能处于不可用的状态 */
#define KERN_ALERT KERN_SOH "1"  /* 紧急和理科需要处理的输出 */
#define KERN_CRIT KERN_SOH "2"  /* 紧急情况 */
#define KERN_ERR KERN_SOH "3"  /* 发生错误的情况 */
#define KERN_WARNING KERN_SOH "4" /* 警告 */
#define KERN_NOTICE KERN_SOH "5"  /* 重要的提示 */
#define KERN_INFO KERN_SOH "6"  /* 提示信息 */
#define KERN_DEBUG KERN_SOH "7"  /* 调试输出 */

Linux内核为printk定义了8个输出等级,KERN_EMERG等级最高,KERN_DEBUG等级最低。在配置内核时,由一个宏来设置系统默认的输出等级CONFIG_MESSAGE_LOGLEVEL_DEFAULT,通常这个默认输出等级为4,因此只有输出等级高于4时才会输出到终端或者串口,即只有KERN_EMERG~KERN_ERR满足这个条件。

通常在产品开发阶段,会把系统默认等级设置为最低,以便在开发测试阶段可以暴露更多的问题和调试信息,在发布产品时再把输出等级设置为0或者4

修改printk等级

# cat /proc/sys/kernel/printk  //printk默认有4个等级
7  4  1  7

四个数字分表代表:

控制台输出等级
默认消息等级
最低输出等级
默认控制台输出等级

在系统运行时,我们也可以修改系统的输出等级。打开所有的内核输出:

echo 8 > /proc/sys/kernel/printk  //打开所有的内核输出

另外,还可以通过在启动内核时传递commandline给内核的方法来修改系统默认的输出等级。例如,使用uboot引导内核时,可以在uboot传参的bootargs参数上,加上“loglevel=8”,这样在系统启动时,就打开了所有内核输出。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分