printk 与syslog
1> 所有系统信息是输出到ring buffer中去的.dmesg所显示的内容也是从ring buffer中读取的
2> LINUX系统启动后,由/etc/init.d/sysklogd先后启动klogd,syslogd两个守护进程。
2.1> klogd会通过syslog()系统调用或者读取proc文件系统(/proc/kmsg)来从系统缓冲区(ring buffer)中得到由内核printk()发出的信息
2.2> Klogd的输出结果会传送给syslogd进行处理,syslogd会根据/etc/syslog.conf的配置把log信息输出到/var/log/下的不同文件中
3> 当printk指定的优先级(DEFAULT_MESSAGE_LEVEL 4)小于指定的控制台优先级console_logleve(DEFAULT_CONSOLE_LOGLEVEL 7)l时,调试消息就显示在控制台虚拟终端,修改当前控制台优先级可以使用:dmesg -n x,kmsg -c x(重启生效),修改/proc/sys/kernel/printk
4 >printk的输出会被输出到默认console上,比如启动的时候将串口指定为默认的console后,就会输出到串口