linux kernel log 级别设置

来源:互联网 发布:服务器80端口被占用 编辑:程序博客网 时间:2024/05/22 02:15

只有当printk打印信息时的loglevel小于console loglevel的值(优先级高于console loglevel),这些信息才会被打印到console上。

改变console loglevel的方法有如下几种:

  1. 启动时Kernel boot option:loglevel=level

  2. 运行时Runtime: dmesg -n level

(注意:demsg -n level 改变的是console上的loglevel,dmesg命令仍然会打印出所有级别的系统信息。)

  1. 运行时Runtime: echo $level > /proc/sys/kernel/printk
    echo 8 > /proc/sys/kernel/printk
    查看当前控制台的打印等级时,可以使用以下命令:
    cat /proc/sys/kernel/printk
    使用上述命令后,会打印4个数字,第一个即是当前控制台的打印信息等级。假设当前控制台的打印信息等级为7,那么所有打印信息等级小于等于7的打印信息都可以在控制台打印出来。
    ///////////////////////////////////////////////////////////////////
    附加
    通过procfs控制printk打印消息

  2. 查看当前printk打印消息的log等级

cat /proc/sys/kernel/printk

7 4 1 7

1
2
“7 4 1 7” 分别对应console_loglevel、default_message_loglevel、minimum_c onsole_loglevel、default_console_loglevel,意味着只有优先级高于KERN_DEBUG(7)的打印消息才能输出到终端

  1. 改变console_loglevel

echo 8 4 1 7 > /proc/sys/kernel/printk

1
输入“8 4 1 7”改变console_loglevel值,使得所有的打印消息都能输出到终端

///////////////////////////////////////////////////////////////

  1. 运行时Runtime:写程序使用syslog系统调用(可以man syslog)
#include <unistd.h>#include <sys/syscall.h>static inline int syslog(int type, char *bufp, int len){         return syscall(SYS_syslog, type, bufp, len);}
原创粉丝点击