【问题标题】:Record kernel Log while running an application运行应用程序时记录内核日志
【发布时间】:2013-05-09 02:52:47
【问题描述】:

我在Linux内核中放了一些printk这样的声明

printk(KERN_DEBUG " Hello from Kernel ");

我有兴趣在运行 a.out 应用程序时记录此命令的输出,例如:

cp /var/log/dmesg oldLog.txt
./a.out
cp /var/log/dmesg newLog.txt
diff oldLog.txt newLog.txt

但是这个方法好像不行。 newLog.txt 和 oldLog.txt 都是一样的。但是,我可以在dmesg 命令输出中观察到"Hello from Kernel"。您是否知道像这样捕获日志的简单方法?

我的第二个问题是关于日志级别的。我在printk 语句中使用了KERN_DEBUG,但即使我设置了echo 1 > /proc/sys/kernel/printk,它仍然会在dmesg 命令输出中打印Hello from kernel

【问题讨论】:

    标签: logging linux-kernel kernel linux-device-driver printk


    【解决方案1】:

    这里已经讨论过Where does printk() print to?

    printk 消息将直接转到dmesg

    【讨论】:

      【解决方案2】:

      1) printk 调试语句总是与 dmesg 命令一起显示,与设置的日志级别无关。调试消息可以在 /var/log/messages 中找到。 2) Loglevel 设置为在控制台上打印调试消息。即使您设置了最高优先级日志级别 (KERN_EMERG) 以在控制台上打印调试消息,如果 X-server(GUI) 正在运行,它也不会显示在控制台中。为了在控制台上获取高优先级的 printk 消息,跳转到控制台模式。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-02-07
        • 1970-01-01
        • 1970-01-01
        • 2014-10-01
        • 2017-12-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多