1. 程式人生 > >調整核心printk的列印級別

調整核心printk的列印級別

有時除錯核心模組,列印資訊太多了,可以通過修改/proc/sys/kernel/printk檔案內容來控制。

預設設定是7   4   1   7

# cat /proc/sys/kernel/printk

7       4       1      7

該檔案有四個數字值,它們根據日誌記錄訊息的重要性,定義將其傳送到何處。關於不同日誌級別的更多資訊,請查閱syslog(2)聯機幫助。上面顯示的4個數據分別對應:

控制檯日誌級別:優先順序高於該值的訊息將被列印控制檯

預設的訊息日誌級別:將用該優先順序來列印沒有優先順序的訊息

最低的控制檯日誌級別:控制檯日誌級別可被設定的最小值(最高優先順序)

預設的控制檯日誌級別:控制檯日誌級別的預設值

數值越小,優先順序越高

其實這四個值是在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 */

};

 核心通過printk() 輸出的資訊具有日誌級別,日誌級別是通過在printk() 輸出的字串前加一個帶尖括號的整數來控制的,如printk("<6>Hello, world!\n");。核心中共提供了八種不同的日誌級別,在 Linux/kernel.h 中有相應的巨集對應。

#define KERN_EMERG  "<0>"   /* systemis unusable */

#define KERN_ALERT  "<1>"   /* actionmust be taken immediately */

#define KERN_CRIT    "<2>"   /*critical conditions */

#define KERN_ERR     "<3>"   /* errorconditions */

#define KERN_WARNING "<4>"   /* warning conditions */

#define KERN_NOTICE  "<5>"   /* normalbut significant */

#define KERN_INFO    "<6>"   /*informational */

#define KERN_DEBUG   "<7>"   /*debug-level messages */

所以printk() 可以這樣用:printk(KERN_INFO"Hello, world!\n");。

未指定日誌級別的printk() 採用的預設級別是DEFAULT_MESSAGE_LOGLEVEL,這個巨集在kernel/printk.c 中被定義為整數4,即對應KERN_WARNING。

如果要想在核心啟動過程中列印少的資訊,就可以根據自己的需要在kernel/printk.c中修改以上數值,重新編譯即可!

/* printk's without a loglevel use this.. */

#define DEFAULT_MESSAGE_LOGLEVEL 4 /* KERN_WARNING */

瞭解了上面的這些知識後,我們就應該知道如何手動控制printk列印了。例如,我想遮蔽掉所有的核心printk列印,那麼我只需要把第一個數值調到最小值1或者0。

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

或者

# echo 0       4       0      7 > /proc/sys/kernel/printk

相關推薦

調整核心printk列印級別--減少啟動時的列印資訊

有時除錯核心模組,列印資訊太多了,可以通過修改/proc/sys/kernel/printk檔案內容來控制。預設設定是6   4   1   7 # cat /proc/sys/kernel/printk 7       4       1      7 該檔案有四個

調整核心printk列印級別

有時除錯核心模組,列印資訊太多了,可以通過修改/proc/sys/kernel/printk檔案內容來控制。 預設設定是7   4   1   7 # cat /proc/sys/kernel/printk 7       4       1      7 該檔

更改printk列印級別

1、檢視當前控制檯的列印級別  cat /proc/sys/kernel/printk  4    4    1    7  其中第一個“4”表示核心列印函式printk的列印級別,只有級別比他高的資訊才能在控制檯上打印出來,既 0-3級別的資訊 2、修改列印  ech

linux核心列印級別

轉載地址:https://www.cnblogs.com/Caden-liu8888/p/5652168.html 1.printk()是一個核心的一個記錄日誌的機制,經常用來記錄資訊或者警告。printk可以指定輸出日誌的優先順序,在include/linux/kern_levels.h中有相

printk核心列印函式的使用

核心中列印函式的使用     printk(列印級別 “格式化輸出”,...);     printk(“格式化輸出”,...);  列印級別:       #define KERN_EMERG        "<0>"    /* system is unu

printk除錯之設定日誌列印級別

日誌列印注意事項: 1. 日誌輸出是有代價的,特別是在嵌入式系統,或者對執行時序要求較高的應用場景。因此           a) 只有在需要的地方加入,不能濫用           b) 一定要有一個全域性的開關,在不需要或者產品釋出的時候,關閉輸出,或者降低日誌輸出

限制核心printk列印頻率

在很多時候我們需要限制printk的列印頻率,避免除錯資訊刷屏。有如下方法可以使用。 1.使用printk_rateelimit() 用法舉例: if(printk_rateelimit()) printk("xxxx"); 預設限制頻率是5秒10次列印

printk 核心除錯 訊息級別

核心除錯相比於使用者程式除錯難度就要大很多。 LINUX 是 C 語言寫的,但不能使用 printf 來列印,原因很容易解釋,核心中不認識庫 檔案中的 printf 函式。 最普通的除錯技術是監視,即在應用程式中的適當地方呼叫 printf 顯示監視資訊,這 是針對普通應用

在Ubuntu上開發編譯核心模組以及除錯核心模組,並檢視printk列印的訊息

Ubuntu上開發編譯核心模組以及除錯核心模組,並檢視printk列印的訊息 前言:在開發中,為了方便,其實我們是可以先在ubuntu執行和測試核心模組,測試好了再用交叉編譯到ARM裝置上執行。下

log4j日誌列印級別動態調整

1,為什麼日誌列印級別要動態調整?   隨著專案越來越大,訪問量也越來越高,遇到問題時想要排查,可是日誌一開啟卻刷的太快太快,不好排查問題,有的時候甚至因為短時間列印日誌太多,嚴重影響了效能,這個時候日誌的列印級別的動態調整就相當有必要了,在不重啟專案的情況,不改動程式碼的情況下,通過Apollo動態配置就可

android 修改預設logcat列印級別

軟體版本:Android6.0 硬體平臺:MTK6797       關於系統預設的日誌級別問題,涉及到了一個系統屬性,就是persist.log.tag,那麼這個屬性是在哪裡初始化定義的呢? 在mtk原始碼的vendor/mediatek/p

Tomcat - 怎麼控制某個類或者包下的日誌列印級別

問題與分析 Tomcat是使用自己的日誌實現tomcat-juli.jar來列印日誌資訊的,日誌會被列印到catalina.out裡,除去你在專案裡自己使用的日誌框架外,由System.out,System.err或者printStackTrace()打印出來的資訊則是會被輸入到catalina.out裡,

[Spark--編碼]--如何設定日誌的列印級別

以下三種方式可以選擇有一種,但就經測試,最靠譜的方式是第三種結合第一種使用。 1、通過配置檔案 #log4j.rootLogger=WARN,console log4j.rootLogger=DEBUG, stdout # console log4j.appender.

JAVA程式碼如何設定SPARK的日誌列印級別

問題場景:在使用spark sql 增加where條件過濾時,會出現列印很多的被過濾掉的記錄(幾十萬條),導致跑spark sql 特別慢! var df2 = sqc.sql("SELECT * FROM T_COMMISIONRATEDEF WHERE T_INSURANCETYPE = '

/proc/sys/kernel/printk 列印log設定

/proc/sys/kernel/printk Printk 共有4個引數 Cat /proc/sys/kernel/printk 7 4 1 7 (1)第一個引數 7表示小於7優先順序訊息才會被輸出到控制檯。 (2)第二個引數4 表示預設的printk訊息優先級別

Android系統底層驅動除錯之資訊列印級別

(本文說明的平臺:msm8953,系統:Android N,其他平臺和系統可作為參考使用)    在Linux中除錯核心模組時使用printk函式來列印除錯資訊時,可以設定列印資訊的級別。那麼就肯定會有這樣一個設定,用於控制終端顯示的資訊級別的。這個是通過/proc/sys/

設定日誌列印級別

tomcat 日誌資訊分 為 兩 類 :一是執行中的日誌,它主要 記錄 執行的一些資訊,尤其是一些異常 錯誤 日誌資訊 。二是 訪問 日誌資訊,它 記錄 的 訪問 的 時間 , IP , 訪問 的 資 料等相 關 資訊。2.1  訪問日誌的配置預設 tomcat 不記錄訪

linux初學核心列印訊息

  核心版本:Linux version 3.0.15(cat /proc/version)   剛開始接觸程式設計,從第一句打印出hello world一直用的是printf,直到接觸linux核心,這一使用方法開始改變!   printk()和printf()之間的一個

linux 核心時間列印

struct timespec ts; ts = current_kernel_time(); printk(KERN_ALERT "i=%d, channel=%d, %ld %ld\n", i, channel, ts.tv_sec, ts.tv_nsec); stru

控制Linux kernel啟動console的列印級別

235 /* 236 * This should be approx 2 Bo*oMips to start (note initial shift), and will 237 * still work even if initially too large, it will just take sli