kernel printk信息显示级别
2015-09-21 00:05
190 查看
涉及文件:kernel/printk.c include/linux/kernel.h
用printk内核会根据日志级别把消息打印到当前控制台上。
信息正常输出前提是--日志输出级别小于控制台级别,
内核中数字越小优先级越高。
没有指定日志级别的printk默认级别是DEFAULT_MESSAGE_LOGLEVEL,
默认级别一般为4,与KERN_WARNING一级别。
在kernel/printk.c中定义:
/* printk's without a loglevel use this.. */
#define DEFAULT_MESSAGE_LOGLEVEL 4 /* KERN_WARNING */
/* We show everything that is MORE important than this.. */
#define MINIMUM_CONSOLE_LOGLEVEL 1 /* Minimum loglevel we let people use */
#define DEFAULT_CONSOLE_LOGLEVEL 7 /* anything MORE serious than KERN_DEBUG */
69 int console_printk[4] = {
70 DEFAULT_CONSOLE_LOGLEVEL, /* console_loglevel */
71 DEFAULT_MESSAGE_LOGLEVEL, /* default_message_loglevel */
72 MINIMUM_CONSOLE_LOGLEVEL, /* minimum_console_loglevel */
73 DEFAULT_CONSOLE_LOGLEVEL, /* default_console_loglevel */
74 };
日志级别一共有8级,定义于include/linux/kernel.c中
102 #define KERN_EMERG "<0>" /* system is unusable */
103 #define KERN_ALERT "<1>" /* action must be taken immediately */
104 #define KERN_CRIT "<2>" /* critical conditions */
105 #define KERN_ERR "<3>" /* error conditions */
106 #define KERN_WARNING "<4>" /* warning conditions */
107 #define KERN_NOTICE "<5>" /* normal but significant condition */
108 #define KERN_INFO "<6>" /* informational */
109 #define KERN_DEBUG "<7>" /* debug-level messages */
111 /* Use the default kernel loglevel */
112 #define KERN_DEFAULT "<d>"
118 #define KERN_CONT "<c>"
119
120 extern int console_printk[];
121
122 #define console_loglevel (console_printk[0])
123 #define default_message_loglevel (console_printk[1])
124 #define minimum_console_loglevel (console_printk[2])
125 #define default_console_loglevel (console_printk[3])
------------------------------------------------------------------------------------------
其实printk始终是输出信息的,用户区/var/log/messages,
内核态/proc/kmsg(klogd没运行,消息不会到用户区)。
读写/proc/sys/kernel/printk可读取或修改控制台日志级别。
#cat /proc/sys/kernel/printk
6 4 1 7
==>控制台日志级别,默认消息日志级别,最低的控制台日志级别,默认的控制台日志级别。
用printk内核会根据日志级别把消息打印到当前控制台上。
信息正常输出前提是--日志输出级别小于控制台级别,
内核中数字越小优先级越高。
没有指定日志级别的printk默认级别是DEFAULT_MESSAGE_LOGLEVEL,
默认级别一般为4,与KERN_WARNING一级别。
在kernel/printk.c中定义:
/* printk's without a loglevel use this.. */
#define DEFAULT_MESSAGE_LOGLEVEL 4 /* KERN_WARNING */
/* We show everything that is MORE important than this.. */
#define MINIMUM_CONSOLE_LOGLEVEL 1 /* Minimum loglevel we let people use */
#define DEFAULT_CONSOLE_LOGLEVEL 7 /* anything MORE serious than KERN_DEBUG */
69 int console_printk[4] = {
70 DEFAULT_CONSOLE_LOGLEVEL, /* console_loglevel */
71 DEFAULT_MESSAGE_LOGLEVEL, /* default_message_loglevel */
72 MINIMUM_CONSOLE_LOGLEVEL, /* minimum_console_loglevel */
73 DEFAULT_CONSOLE_LOGLEVEL, /* default_console_loglevel */
74 };
日志级别一共有8级,定义于include/linux/kernel.c中
102 #define KERN_EMERG "<0>" /* system is unusable */
103 #define KERN_ALERT "<1>" /* action must be taken immediately */
104 #define KERN_CRIT "<2>" /* critical conditions */
105 #define KERN_ERR "<3>" /* error conditions */
106 #define KERN_WARNING "<4>" /* warning conditions */
107 #define KERN_NOTICE "<5>" /* normal but significant condition */
108 #define KERN_INFO "<6>" /* informational */
109 #define KERN_DEBUG "<7>" /* debug-level messages */
111 /* Use the default kernel loglevel */
112 #define KERN_DEFAULT "<d>"
118 #define KERN_CONT "<c>"
119
120 extern int console_printk[];
121
122 #define console_loglevel (console_printk[0])
123 #define default_message_loglevel (console_printk[1])
124 #define minimum_console_loglevel (console_printk[2])
125 #define default_console_loglevel (console_printk[3])
------------------------------------------------------------------------------------------
其实printk始终是输出信息的,用户区/var/log/messages,
内核态/proc/kmsg(klogd没运行,消息不会到用户区)。
读写/proc/sys/kernel/printk可读取或修改控制台日志级别。
#cat /proc/sys/kernel/printk
6 4 1 7
==>控制台日志级别,默认消息日志级别,最低的控制台日志级别,默认的控制台日志级别。
相关文章推荐
- 使用IntelliJ IDEA,gradle开发Java web应用步骤
- 百度有了吴恩达,还缺什么
- Spring-Hibernate整合 学习笔记
- 如何在Android开发中测试应用在真机上实验
- Centos 7.1 配置DNS view
- epoll/select
- 第30本:《怎样解题》
- 一字一句体验语言的魅力-2:80386-datasheet翻译学习-第一章完
- 字符串替换
- Spring-AOP学习笔记
- 第30本:《怎样解题》
- linux终端无打印信息的实现
- HDU 1011 Starship Troopers 树形DP 有坑点
- Xcode 添加 SVN 出现 nsurlerrordomain error 1012
- java面试四 运算符测试
- python中kmeans聚类实现代码
- ASP.NET MVC5网站开发管理列表、回复及删除(十三)
- asp.net中的窗体身份验证(最简单篇)
- ASP.NET图片处理三类经典问题
- jsp简单实现页面之间共享信息的方法