如何修改arm Linux中Printk的等级
#define
#define
#define
#define
#define
#define
#define
#define
从这里也可以看出他们的优先级是数值越小,其紧急和严重程度就越高。
extern int console_printk[];
#define console_loglevel (console_printk[0])
#define default_message_loglevel (console_printk[1])
#define minimum_console_loglevel (console_printk[2])
#define default_console_loglevel (console_printk[3])
未指定优先级的默认级别定义在/kernel/printk.c中:
#define DEFAULT_MESSAGE_LOGLEVEL 4
#define MINIMUM_CONSOLE_LOGLEVEL 1
#define DEFAULT_CONSOLE_LOGLEVEL 7
int console_printk[4] = {
};
当优先级的值小于console_loglevel这个整数变量的值,信息才能显示出来。而console_loglevel的初始值DEFAULT_CONSOLE_LOGLEVEL也定义在/kernel/printk.c中:
cat /proc/sys/kernel/printk
4
这个默认值是在sysctl.conf中写的,在系统启动时就把这个值写到/proc/sys/kernel/printk这个文件了。也可以使用下面的命令修改其值
echo 0 > /proc/sys/kernel/printk
cat /proc/sys/kernel/printk
0
它们根据日志记录消息的重要性,定义将其发送到何处。关于不同日志级别的更多信息,请阅读 syslog(2) 联机帮助页。该文件的四个值为:
控制台日志级别:优先级高于该值的消息将被打印至控制台
缺省的消息日志级别:将用该优先级来打印没有优先级的消息
最低的控制台日志级别:控制台日志级别可被设置的最小值(最高优先级)
缺省的控制台日志级别:控制台日志级别的缺省值
以下是我的测试程序和作的相关的测试。
#include
#include
#include
static int __init pinit(void)
{
printk("<0>goodluck0!n");
printk("<1>goodluck1!n");
printk("<2>goodluck2!n");
printk("<3>goodluck3!n");
printk("<4>goodluck4!n");
printk("<5>goodluck5!n");
printk("<6>goodluck6!n");
printk("<7>goodluck7!n");
printk("<8>goodluck8!n");//虽然没有这级别,我还是试了一把。目的是看默认级别。
return 0;
}
static void __exit pexit(void)
{
printk("<0>goodbey!0n");
printk("<1>goodbey!1n");
printk("<2>goodbey!2n");
printk("<3>goodbey!3n");
printk("<4>goodbey!4n");
printk("<5>goodbey!5n");
printk("<6>goodbey!6n");
printk("<7>goodbey!7n");
}
module_init(pinit);
module_exit(pexit);
在这里我只观察了四个比较重要的日志文件:messages,kern.log,syslog,debug。这四个文件都在/var/log/这个目录下。它的日志文件经观察未出现这些printk信息。
cat /proc/sys/kernel/printk
4
在上面这种情况下日志文件的变化情况是:
l
l
l
l
cat /proc/sys/kernel/printk
0
在上面这种情况下日志文件的变化情况是:
l
l
l
l
cat /proc/sys/kernel/printk
7
l
l
l
l
分析结论:在操作系统是图形化的界面下测试证明-日志记录和终端级别是没有关系的,但是在文本界面下的结果和这里是不太一样的,根据不同的设置有些信息会输出到终端。这里就不多说了。
其次有关于系统的日志记录工具有两种主要的:syslog和klog。
Linux系统中/etc/init.d/sysklogd会启动2个守护进程:Klogd, Syslogd。
syslog是 Unix 系统的一个常见组件,用于执行系统日志记录活动。syslogd 是它的守护进程。syslogd 从一组日志源(如 /dev/log 和 /dev/klog )中读取数据,并按照 /etc/syslog.conf
armLinuxPrintk等 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)