1

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

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 都是一样的。但是,我可以"Hello from Kernel"dmesg命令输出中观察到。您是否知道像这样捕获日志的简单方法?

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

4

2 回答 2

1

这里已经讨论过printk() 打印到哪里?

printk消息将直接转到dmesg.

于 2013-05-09T03:57:42.530 回答
1

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

于 2013-05-09T04:15:59.997 回答