Linux内核日志级别

1 内核日志级别

内核通过 printk 输出日志,其级别由 /proc/sys/kernel/printk 控制。直接读取该文件即可:

cat /proc/sys/kernel/printk

输出示例如下:

4   4   1   7

四个数字分别表示:

  1. 当前控制台日志级别(Console Log Level):只有优先级高于此值的消息才会输出到控制台。

  2. 默认消息日志级别:未明确指定级别的printk消息使用的默认级别。

  3. 最小允许的日志级别:允许设置的最低控制台日志级别

  4. ​启动时的默认控制台日志级别​​:系统启动时的初始值。

printk 的日志级别数值越小,优先级越高​​。这是 Linux 内核中 printk 日志级别的核心设计逻辑,数值范围从 ​​0(最高紧急级别)​​ 到 ​​7(最低调试级别)​​。

数值 宏定义 说明
​0​ KERN_EMERG 紧急(Emergency):系统不可用,需要立即处理(如内核崩溃)。
​1​ KERN_ALERT 警报(Alert):必须立即采取行动(如硬件故障)。
​2​ KERN_CRIT 严重(Critical):严重错误(如磁盘故障导致数据丢失)。
​3​ KERN_ERR 错误(Error):运行时错误(如驱动加载失败)。
​4​ KERN_WARNING 警告(Warning):非关键问题(如内存不足)。
​5​ KERN_NOTICE 通知(Notice):正常但重要的事件(如硬件热插拔)。
​6​ KERN_INFO 信息(Info):系统状态信息(如设备初始化完成)。
​7​ KERN_DEBUG 调试(Debug):调试信息(仅在开发或排查问题时启用)。

2 修改printk日志级别

在 Linux 内核中,​printk 的默认日志级别是 KERN_WARNING(数值为 4)​​。当在代码中调用 printk 时未显式指定日志级别,内核会使用此默认值。可以通过以下方法调整printk的日志级别:

2.1 临时调整

# 将默认消息级别设为 6(KERN_INFO)
echo "4 6 1 7" > /proc/sys/kernel/printk

2.2 永久修改​

编辑 /etc/sysctl.conf,添加:

kernel.printk = 4 6 1 7
posted @ 2025-05-12 14:54  cockpunctual  阅读(222)  评论(0)    收藏  举报