1.printk日志级别的来源
其实printk的基本原理我是通过韦东山的视频和一篇CSDN博客了解到的
博客链接贴在下面:
嵌入式Linux——printk:printk打印机制分析_静祥阁-CSDN博客_linux printk
博客写得很详细,该博客主要分为如下几个部分:
printk原理/控制台的选择/printk日志级别的设置
下面依次说一下这几个宏的含义:
console_loglevel:控制台当前日志级别,从上一篇printk原理中知道,只有printk自带的级别小于此值,printk才会调用控制台驱动打印,即,只有当printk("<n>...")中的n < console_loglevel时才会打印
default_message_loglevel:默认消息日志级别,从上一篇printk原理中知道,当printk中不带显示的日志级别时,代码会自动在log_buf中加上这个级别,即,如果默认消息日志级别是n且printk中无日志级别,系统自动加为printk("<n>...")
minimum_console_loglevel:最小控制台日志级别:如果更改控制台日志级别不能小于此值
default_console_loglevel:默认控制台日志级别
2.printk日志级别的设置
一般来说,修改printk的日志级别有三种方法:
1).直接修改内核源码(不提倡)
2).修改bootargs启动参数(嵌入式Linux——printk:printk打印机制分析_静祥阁-CSDN博客_linux printk)
3).要将设置的值写入proc系统/proc/sys/kernel/printk
我们再来看一下printk中的8种日志级别以及对应的宏:
#define KERN_EMERG "<0>" /* system is unusable */
#define KERN_ALERT "<1>" /* action must be taken immediately */
#define KERN_CRIT "<2>" /* critical conditions */
#define KERN_ERR "<3>" /* error conditions */
#define KERN_WARNING "<4>" /* warning conditions */
#define KERN_NOTICE "<5>" /* normal but significant condition */
#define KERN_INFO "<6>" /* informational */
#define KERN_DEBUG "<7>" /* debug-level messages */
Q:那么KERN_DEBUG级别的打印要怎么体现出来呢?
A:可以将console_loglevel改到8或者10甚至更高,因为它就是个int类型的值嘛
所以,一般我们可以这样使用printk:
3.你还在使用printk吗?
未完......