<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 如何修改arm Linux中Printk的等級

如何修改arm Linux中Printk的等級

作者: 時(shí)間:2016-11-20 來(lái)源:網(wǎng)絡(luò ) 收藏
首先,printk有8個(gè)loglevel,定義在中,其中數值范圍從0到7,數值越小,優(yōu)先級越高。

#defineKERN_EMERG"<0>"系統崩潰

本文引用地址:http://dyxdggzs.com/article/201611/318985.htm

#defineKERN_ALERT"<1>"必須緊急處理

#defineKERN_CRIT"<2>"臨界條件,嚴重的硬軟件錯誤

#defineKERN_ERR"<3>"報告錯誤

#defineKERN_WARNING"<4>"警告

#defineKERN_NOTICE"<5>"普通但還是須注意

#defineKERN_INFO"<6>"信息

#defineKERN_DEBUG"<7>"調試信息

從這里也可以看出他們的優(yōu)先級是數值越小,其緊急和嚴重程度就越高。

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])

未指定優(yōu)先級的默認級別定義在/kernel/printk.c中:

#define DEFAULT_MESSAGE_LOGLEVEL 4

#define MINIMUM_CONSOLE_LOGLEVEL 1

#define DEFAULT_CONSOLE_LOGLEVEL 7

int console_printk[4] = {

DEFAULT_CONSOLE_LOGLEVEL,終端級別

DEFAULT_MESSAGE_LOGLEVEL,默認級別

MINIMUM_CONSOLE_LOGLEVEL,讓用戶(hù)使用的最小級別

DEFAULT_CONSOLE_LOGLEVEL,默認終端級別

};

當優(yōu)先級的值小于console_loglevel這個(gè)整數變量的值,信息才能顯示出來(lái)。而console_loglevel的初始值DEFAULT_CONSOLE_LOGLEVEL也定義在/kernel/printk.c中:

cat /proc/sys/kernel/printk

4 4 1 7

這個(gè)默認值是在sysctl.conf中寫(xiě)的,在系統啟動(dòng)時(shí)就把這個(gè)值寫(xiě)到/proc/sys/kernel/printk這個(gè)文件了。也可以使用下面的命令修改其值

echo 0 > /proc/sys/kernel/printk

cat /proc/sys/kernel/printk

0 4 1 7

它們根據日志記錄消息的重要性,定義將其發(fā)送到何處。關(guān)于不同日志級別的更多信息,請閱讀 syslog(2) 聯(lián)機幫助頁(yè)。該文件的四個(gè)值為:
控制臺日志級別:優(yōu)先級高于該值的消息將被打印至控制臺
缺省的消息日志級別:將用該優(yōu)先級來(lái)打印沒(méi)有優(yōu)先級的消息
最低的控制臺日志級別:控制臺日志級別可被設置的最小值(最高優(yōu)先級)
缺省的控制臺日志級別:控制臺日志級別的缺省值

以下是我的測試程序和作的相關(guān)的測試。

#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");//雖然沒(méi)有這級別,我還是試了一把。目的是看默認級別。

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);

在這里我只觀(guān)察了四個(gè)比較重要的日志文件:messages,kern.log,syslog,debug。這四個(gè)文件都在/var/log/這個(gè)目錄下。它的日志文件經(jīng)觀(guān)察未出現這些printk信息。

cat /proc/sys/kernel/printk

4 4 1 7

在上面這種情況下日志文件的變化情況是:

l kern.log: 紀錄了級別是0—7包括<8>的所有信息,在這些紀錄當中,其中<8>的紀錄是這樣的。<8>goodluck8!

l Messages: 只是記錄了456和<8>。

l Syslog: 記錄和kern.log一樣。

l Debug: 之記錄級別是7的信息。

cat /proc/sys/kernel/printk

0 4 1 7

在上面這種情況下日志文件的變化情況是:

l kern.log: 紀錄了級別是0—7包括<8>的所有信息,在這些紀錄當中,其中<8>的紀錄是這樣的。<8>goodluck8!

l Messages: 只是記錄了456和<8>。

l Syslog: 記錄和kern.log一樣。

l Debug: 之記錄級別是7的信息。

cat /proc/sys/kernel/printk

7 4 1 7

l kern.log: 紀錄了級別是0—7包括<8>的所有信息,在這些紀錄當中,其中<8>的紀錄是這樣的。<8>goodluck8!

l Messages: 只是記錄了456和<8>。

l Syslog: 記錄和kern.log一樣。

l Debug: 之記錄級別是7的信息。

分析結論:在操作系統是圖形化的界面下測試證明-日志記錄和終端級別是沒(méi)有關(guān)系的,但是在文本界面下的結果和這里是不太一樣的,根據不同的設置有些信息會(huì )輸出到終端。這里就不多說(shuō)了。

其次有關(guān)于系統的日志記錄工具有兩種主要的:syslog和klog。

Linux系統中/etc/init.d/sysklogd會(huì )啟動(dòng)2個(gè)守護進(jìn)程:Klogd, Syslogd。

syslog是 Unix 系統的一個(gè)常見(jiàn)組件,用于執行系統日志記錄活動(dòng)。syslogd 是它的守護進(jìn)程。syslogd 從一組日志源(如 /dev/log 和 /dev/klog )中讀取數據,并按照 /etc/syslog.conf 中的說(shuō)明處理這些日志消息。通過(guò)調用syslog(),可將應用程序日志消息記錄到 syslog 中。syslog 消息采用一種包含可選優(yōu)先級和設備的標準格式。優(yōu)先級指示消息的緊急程度。設備指示發(fā)布消息的子系統。/usr/include/syslog.h中定義了它的優(yōu)先級和設備資源。

klog是一個(gè)從Unix內核接受消息的設備klogd 守護進(jìn)程獲得并記錄 Linux 內核信息。通常,syslogd 會(huì )記錄 klogd 傳來(lái)的所有內核信息。

syslogd的配置文件是/etc/syslog.conf。

下面是我機子上這個(gè)文件的部分內容。主要是對debug和messages文件要記錄內容的設置。

*.=debug;

auth,authpriv.none;

news.none;mail.none -/var/log/debug

*.=info;*.=notice;*.=warn;

auth,authpriv.none;

cron,daemon.none;

mail,news.none -/var/log/messages




關(guān)鍵詞: armLinuxPrintk等

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>