如何以编程方式更改dmesg的日志级别?

时间:2013-05-07 09:42:10

标签: c debugging kernel

我想更改dmesg的掩码优先级,我想只打印那些优先级最高的消息。那么如何以编程方式更改这些优先级呢?

Like if printk priority is KERN_ALERT or less than this then no message will printed in dmesg or console. I want only KERN_EMERG messages in dmesg.

我有的解决方案就是编辑printk proc文件,如 -

echo 0 >/proc/sys/kernel/printk

但我想要一个Kernel Space API来执行此操作。

我也使用了setlogmask,但它无效。

Is do_syslog works here ??

如果是,那么如何?

我正在编写一个prog文件来执行此操作,就像我想通过proc文件更改dmesg的日志级别。所以有什么想法吗?

提前致谢..

1 个答案:

答案 0 :(得分:1)

有预定义的宏可用。

KERN_EMERG      high priority       low number
KERN_ALERT
KERN_CRIT
KERN_ERR
KERN_WARNING
KERN_NOTICE
KERN_INFO
KERN_DEBUG      lo priority     hi number

例如

printk(KERN_ALERT "Hello Module... ");

请参阅here以设置内核日志级别。