【问题标题】:How to change log level of dmesg programmatically?如何以编程方式更改 dmesg 的日志级别?
【发布时间】:2013-05-07 17:52:51
【问题描述】:

我想更改 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 的日志级别。那么有什么想法吗?

提前谢谢..

【问题讨论】:

    标签: c debugging kernel


    【解决方案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 以设置内核日志级别。

    【讨论】:

    • 我不是在问这个,我想过滤只显示 printk 的 KERN_WARN 消息的 dmesg。
    • 我已经完成了,但它没有用,我正在编写一个 proc 文件,所以我想要一些函数来做到这一点,一些内核 API 来改变日志级别..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-19
    • 2010-10-17
    • 1970-01-01
    • 2023-03-16
    • 2019-05-06
    • 2011-04-19
    • 2012-03-26
    相关资源
    最近更新 更多