在运行应用程序时记录内核日志

时间:2013-05-09 02:52:47

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

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

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

2 个答案:

答案 0 :(得分:1)

此处已讨论Where does printk() print to?

printk条消息将直接转至dmesg

答案 1 :(得分:1)

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