linux初学内核之打印消息
2014-04-04 14:36
429 查看
内核版本:Linux version 3.0.15(cat /proc/version)
刚开始接触编程,从第一句打印出hello world一直用的是printf,直到接触linux内核,这一使用方法开始改变!
printk()和printf()之间的一个显著区别在于printk()允许通过指定一个标志来设置优先级。syslog会根据这个优先级标 志来决定在什么地方显示这条系统信息
对于linux内核的打印消息,kennel定义了8个优先级
code: /include/linux
其中
KERN_EMERG : 最高级别,一般只用来打印崩溃信息
KERN_ALERT : 需要立即处理的信息
KERN_CRIT : 关键信息,一般用来显示严重的硬件和软件错误
KERN_ERR : 用来显示硬件错误
KERN_WARNING : 显示不会造成严重错误的警告信息
KERN_NOTICE : 显示需要引起注意的信息
KERN_INFO : 显示一般信息,例如驱动所发现的硬件列表
KERN_DEBUG : 用来显示调试信息
kernel在编译之前会先指定当前信息打印优先等级如定义为4 ,那么
拥有这几个优先等级的打印消息都不会被打印出来
另外若在使用printk打印消息时未指定打印消息优先级时,则为默认的优先等级,这个优先等级可设
code: /kernel/printk.c
DEFAULT_CONSOLE_LOGLEVEL 指定了整体默认的打印消息优先等级
DEFAULT_MESSAGE_LOGLEVEL printk在使用时未指定优先等级时采用的默认优先级
令也可以实时的改变其优先级
cat /proc/sys/kernel/printk//查看打印消息优先级
root@android:/proc/sys/kernel # cat printk
4 4 1 4
echo 8 8 > /proc/sys/kernel/printk//实时更改优先级
root@android:/proc/sys/kernel # echo 8 8 > printk
root@android:/proc/sys/kernel # cat printk
8 8 1 4
root@android:/proc/sys/kernel #
刚开始接触编程,从第一句打印出hello world一直用的是printf,直到接触linux内核,这一使用方法开始改变!
printk()和printf()之间的一个显著区别在于printk()允许通过指定一个标志来设置优先级。syslog会根据这个优先级标 志来决定在什么地方显示这条系统信息
对于linux内核的打印消息,kennel定义了8个优先级
code: /include/linux
#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 */
其中
KERN_EMERG : 最高级别,一般只用来打印崩溃信息
KERN_ALERT : 需要立即处理的信息
KERN_CRIT : 关键信息,一般用来显示严重的硬件和软件错误
KERN_ERR : 用来显示硬件错误
KERN_WARNING : 显示不会造成严重错误的警告信息
KERN_NOTICE : 显示需要引起注意的信息
KERN_INFO : 显示一般信息,例如驱动所发现的硬件列表
KERN_DEBUG : 用来显示调试信息
kernel在编译之前会先指定当前信息打印优先等级如定义为4 ,那么
#define KERN_NOTICE "<5>" /* normal but significant condition */ #define KERN_INFO "<6>" /* informational */ #define KERN_DEBUG "<7>" /* debug-level messages */
拥有这几个优先等级的打印消息都不会被打印出来
另外若在使用printk打印消息时未指定打印消息优先级时,则为默认的优先等级,这个优先等级可设
code: /kernel/printk.c
int console_printk[4] = { DEFAULT_CONSOLE_LOGLEVEL, /* console_loglevel */ DEFAULT_MESSAGE_LOGLEVEL, /* default_message_loglevel */ MINIMUM_CONSOLE_LOGLEVEL, /* minimum_console_loglevel */ DEFAULT_CONSOLE_LOGLEVEL, /* default_console_loglevel */ };
DEFAULT_CONSOLE_LOGLEVEL 指定了整体默认的打印消息优先等级
DEFAULT_MESSAGE_LOGLEVEL printk在使用时未指定优先等级时采用的默认优先级
令也可以实时的改变其优先级
cat /proc/sys/kernel/printk//查看打印消息优先级
root@android:/proc/sys/kernel # cat printk
4 4 1 4
echo 8 8 > /proc/sys/kernel/printk//实时更改优先级
root@android:/proc/sys/kernel # echo 8 8 > printk
root@android:/proc/sys/kernel # cat printk
8 8 1 4
root@android:/proc/sys/kernel #
相关文章推荐
- Linux Socket UDP对等通信
- Linux下安装使用mysql connector/C++
- linux系统日常管理
- Linux C连接Mysql数据库
- linux sar、ss 命令详解
- CentOS下编译安装hping3
- DB2 install on Linux (基础)
- Linux 文件与目录管理
- CentOS下编译安装hping3
- 学习笔记 --- LINUX 应用调试之编写之事件记录与自动重现
- Linux 设备驱动helloworld.ko的制作过程
- 欢迎加入Linux讨论邮件列表
- Centos 挂载光驱
- Linux--根文件系统的挂载过程分析
- Linux No volume control GStreamer plugins and/or devices found
- linux内核设计与实现 第三章笔记
- 【Linux】编译模块记录
- linux架设时间服务器
- Linux 复制、移动覆盖文件不提示
- linux配置IP的方法