在我读过的模块编程中,
如果日志级别为
less than console log level will get displayed and
higher than will be mentioned in log files ,
如果我未在printk语句中指定任何日志级别,则将采用默认日志级别。
我刚看到默认和控制台日志级别
通过
cat / proc / sys / kernel / printk
,结果是
4 4 1 7
此处默认和控制台都相同。
我不明白为什么会创建默认日志级别。我们是否会在任何地方使用默认日志级别。
控制台日志级别与默认日志级别之间的确切区别是什么。
我是模块编程的新手。
答案 0 :(得分:1)
我们知道我们有不同的内核级别日志:
#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*/
好的,让我们单独讨论:
Console log level
用于设置可在控制台窗口with Log levels(printk) < Console log level
上显示的日志级别(4根据您的情况考虑)。
即,它将使用printk使用0,1,2和3的日志级别打印内核消息。其余4到7将记录在由内核维护的循环缓冲区中 - 可以看到发出"dmesg"
。
现在,如果我们转到 Default log level:
每当您使用printk时没有任何日志级别信息,例如:
printk("Insmod my first driver\n");
//此日志级别将设置为&#34; kern_warning&#34;(默认日志级别为4)。
所以区别在于控制台日志用于决定在控制台上打印需要什么,默认日志级别用于默认情况下采用的日志级别,如果printk
在内核模块编程期间没有提到的话