0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux内核中如何修改printk等级

麦辣鸡腿堡 来源:嵌入式Linux充电站 作者:Vincent 2023-09-27 15:56 次阅读

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”,这样在系统启动时,就打开了所有内核输出。

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

    关注

    3

    文章

    1336

    浏览量

    40081
  • Linux
    +关注

    关注

    87

    文章

    11123

    浏览量

    207884
  • 系统
    +关注

    关注

    1

    文章

    1002

    浏览量

    21215
收藏 人收藏

    评论

    相关推荐

    Linux内核学习笔记:printk调试

    很多内核开发者喜欢的调试工具是printk,在Linux内核,使用printk()函数来打印信
    发表于 06-01 15:14 949次阅读

    Linux内核学习笔记:动态输出调试

    上篇说到printk调试,但printk是全局的,只能设置输出等级。而动态输出可以动态选择打开某个内核子系统的输出,可以有选择性地打开某些模块的输出。
    发表于 06-01 15:16 446次阅读
    <b class='flag-5'>Linux</b><b class='flag-5'>内核</b>学习笔记:动态输出调试

    Linux内核调试方法的总结

    printk最容易被接受的一个特质,几乎在任何地方,任何时候内核都可以调用它(中断上下文、进程上下文、持有锁时、多处理器处理时等)。2 printk函数脆弱之处在系统启动过程,终端
    发表于 05-20 10:30

    Linux内核3.5开发,一起了解一下

    的优点1.用户可以随时扩展Linux系统的功能。2.当要修改当前Linux系统的驱动时,只需要卸载旧模块,编译目标驱动模块,重新安装插入即可。3.系统如果需要使用新模块,不必重新编译
    发表于 10-05 20:36

    linux内核打印函数printk的方法

    1.linux内核打印函数printk一、函数有头文件二、定义的关键宏三、函数原型合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个
    发表于 12-20 07:02

    迅为RK3399开发板Android 系统--打印级别设置(printk日志等级设置)

    内核源码 include/linux/kern_levels.h 文件预定义了内核 log 等级,一共有八个
    发表于 10-25 11:21

    基于ARM9和NANDFlash对uboot和Linux内核进行修改

    本文针对嵌入式Linux操作系统提出了一种新的更新机制,并且基于ARM9微处理器和NANDFlash存储器,对uboot和Linux内核进行修改,实现了对嵌入式
    发表于 04-07 11:00 2717次阅读
    基于ARM9和NANDFlash对uboot和<b class='flag-5'>Linux</b><b class='flag-5'>内核</b>进行<b class='flag-5'>修改</b>

    Linux内核模块介绍,使用Linux模块的优点

    内核通过 printk() 输出的信息具有日志级别,日志级别是通过在 printk() 输出的字符串前加一个带尖括号的整数来控制的,如 printk("Hello, world!/n"
    的头像 发表于 03-30 15:53 7280次阅读

    如何配置和使用Linux内核printk功能

    了解如何配置和使用Linux内核printk功能,包括其动态调试功能。 这样可以选择性地打印调试消息,而无需重新编译内核
    的头像 发表于 11-27 06:40 3003次阅读

    你知道Linux内核调试关键技术之一的printk

    内核调试技术之中,最简单的就是printk的使用了,它的用法和C语言应用程序的printf使用类似,在应用程序依靠的是stdio.h
    发表于 05-10 11:18 1641次阅读

    LinuxPrintk与dmesg功能

    要将linux内核的带级别控制的printk内容打印出来,在命令行输入 dmesg -n 8 就将所有级别的信息都打印出来。Linux命令:dmesg  功能说明:显示
    发表于 04-02 14:39 443次阅读

    Linux操作系统修改内核参数的三种方法详细说明

    linux内核的参数设置怎么弄呢,Linux 操作系统修改内核参数有以下三种方式:
    发表于 10-06 18:03 1.1w次阅读
    <b class='flag-5'>Linux</b>操作系统<b class='flag-5'>修改</b><b class='flag-5'>内核</b>参数的三种方法详细说明

    内核调试利器printk的使用心得

        [导读] 刚刚开始做Linux相关开发工作时,深感Linux内核代码庞大,要加些自己的驱动进内核代码树,常常深陷bug的泥沼难以自拔,今天来分享一下
    的头像 发表于 11-08 17:31 2753次阅读
    <b class='flag-5'>内核</b>调试利器<b class='flag-5'>printk</b>的使用心得

    Linux内核pr_xx()函数封装

    pr_xx( )封装 在使用printk的时候需要手动添加输出等级KERN_INFO、KERN_WARNING等,这样还是有些麻烦。因此,Linux内核也对
    的头像 发表于 09-27 15:58 596次阅读

    内核调试工具printkprintk的输出格式

    很多内核开发者喜欢的调试工具是printk,在Linux内核,使用printk()函数来打印信
    的头像 发表于 09-27 16:09 816次阅读