linux下更改printk的打印级别和优先级

printk向用户空间的输出,两个守护进程syslogd和klogd用于处理日志信息。小于控制台级别的信息会被输出到console,而大于控制台级别的信息不输出,只是写入/var/log/messages和/proc/kmsg中。可以通过dmesg查看。

1.查看当前控制台日志信息的打印级别:
$ cat /proc/sys/kernel/printk
4 4 1 7
分别对应:当前的日志级别、未明确指定日志级别时默认消息级别、最小允许的日志级别、引导时的默认日志级别。
2.若需要需改当前的日志打印日志级别为7,则修改打印的命令如下:
(1).echo 7 > /proc/sys/kernel/printk

(2).klogd -c 7 需要先关闭klogd,用ps -C klogd 查出这个进程的pid,然后kill。(注:printk函数将消息写到一个长度为__LOG_BUF_LEN字节的循环缓冲区中,然后唤醒任何睡眠在syslog系统调用或正在读取/proc/kmsg的进程。循环缓冲区满了以后,会绕回开始处填写新的内容。printk()可以在中断中调用。当printk()的调用频率过高时,还可以通过printk_ratelimit()限制输出)。

3.不够打印级别的信息会被写到日志中可通过dmesg 或者 cat /proc/kmsg查看。
4.printk的打印级别定义在include/linux/Printk.h

#define KERN_EMERG  "<0>"   /* system is unusable           */
#define KERN_ALERT  "<1>"   /* action must be taken immediately */
#define KERN_CRIT   "<2>"   /* critical conditions          */
#define KERN_ERR    "<3>"   /* error conditions         */
#define KERN_WARNING    "<4>"   /* warning conditions           */
#define KERN_NOTICE "<5>"   /* normal but significant condition */
#define KERN_INFO   "<6>"   /* informational            */
#define KERN_DEBUG  "<7>"   /* debug-level messages         */

5.printk打印优先级别由KERN_EMERG开始往下依次递减,即数字越小优先级越高。
6.全志平台下更改开机默认日志优先级级别,lichee/tools/pack/chips/sun8iw5p1/configs/default/env.cfg文件中修改,修改如下:

 9 loglevel=7

猜你喜欢

转载自blog.csdn.net/tsb151/article/details/53766298