我把一些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都差不多。但是,我可以在dmesg
命令输出中观察到"Hello from Kernel"
。您知道像这样捕获日志的简单方法吗?
我的第二个问题是关于日志级别。我在printk
语句中使用KERN_DEBUG
,但即使我设置了echo 1 > /proc/sys/kernel/printk
,它仍然在dmesg
命令输出中打印Hello from kernel
。
这里已经讨论过printk()打印到哪里?
printk
消息将直接转到dmesg
1) printk调试语句总是与dmesg命令一起显示,与设置的日志级别无关。Debug消息可以在/var/log/messages中找到2)设置日志级别以获取打印在控制台上的调试消息。即使您设置了最高优先级日志级别(KERN_EMERG)来在控制台中打印调试消息,如果X-server(GUI)正在运行,它也不会不显示在控制台中。要在控制台上获得高优先级printk消息,请跳转到控制台模式。