控制台日志级别和默认日志级别之间的差异

时间:2014-05-18 17:18:07

标签: linux module linux-kernel kernel kernel-module

在我读过的模块编程中,

如果日志级别为

  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

此处默认和控制台都相同。

我不明白为什么会创建默认日志级别。我们是否会在任何地方使用默认日志级别。

控制台日志级别与默认日志级别之间的确切区别是什么。

我是模块编程的新手。

1 个答案:

答案 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在内核模块编程期间没有提到的话