linux核心列印級別

2021-09-01 22:56:42 字數 3024 閱讀 3980

1.printk()是乙個核心的乙個記錄日誌的機制,經常用來記錄資訊或者警告。printk可以指定輸出日誌的優先順序,在include/linux/kern_levels.h中有相應的巨集定義 

1 #define kern_soh    "\001"      /* ascii start of header */  

2 #define kern_soh_ascii '\001'

3

4 #define kern_emerg kern_soh "0" /* system is unusable */

5 #define kern_alert kern_soh "1" /* action must be taken immediately */

6 #define kern_crit kern_soh "2" /* critical conditions */

7 #define kern_err kern_soh "3" /* error conditions */

8 #define kern_warning kern_soh "4" /* warning conditions */

9 #define kern_notice kern_soh "5" /* normal but significant condition */

10 #define kern_info kern_soh "6" /* informational */

11 #define kern_debug kern_soh "7" /* debug-level messages */

12

13 #define kern_default kern_soh "d" /* the default kernel loglevel */

14

15 /*

16 * annotation for a "continued" line of log printout (only done after a

17 * line that had no enclosing \n). only to be used by core/arch code

18 * during early bootup (a continued line is not smp-safe otherwise).

19 */

20 #define kern_cont ""

如果不指定優先順序,這printk就使用預設的優先順序,default_message_loglevel 在linux-3.6.10/kernel/printk.c中有定義

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

2 #define default_message_loglevel config_default_message_loglevel

3

4 /* we show everything that is more important than this.. */

5 #define minimum_console_loglevel 1 /* minimum loglevel we let people use */

6 #define default_console_loglevel 7 /* anything more serious than kern_debug */

如果未對config_default_message_loglevel進行配置,則預設值是4

dmesg:分析核心產生的訊息

dmesg |more                          //輸出所有的核心開機時的資訊。

擷取命令:cut grep

grep:分析一行訊息,若當中有我們所需要的資訊,就將該行拿出來

1、檢視當前控制台的列印級別

1 cat /proc/sys/kernel/printk 

4    4    1    7

其中第乙個「4」表示核心列印函式printk的列印級別,只有級別比他高的資訊才能在控制台上列印出來,既 0-3級別的資訊

2、修改列印

echo "新的列印級別  4    1    7" >/proc/sys/kernel/printk

3、不夠列印級別的資訊會被寫到日誌中可通過dmesg 命令來檢視

4、printk的列印級別

1 #define kern_emerg        "<0>" /* system is unusable */

2 #define kern_alert "<1>" /* action must be taken immediately */

3 #define kern_crit "<2>" /* critical conditions */

4 #define kern_err "<3>" /* error conditions */

5 #define kern_warning "<4>" /* warning conditions */

6 #define kern_notice "<5>" /* normal but significant condition */

7 #define kern_info "<6>" /* informational */

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

5、printk函式的使用

printk(列印級別  「要列印的資訊」)

列印級別  既上面定義的幾個巨集

linux核心列印級別問題

函式printk的使用方法和printf相似,用於核心列印訊息。printk根據日誌級別 loglevel 對訊息進行分類。日誌級別用巨集定義,日誌級別巨集展開為乙個字串,在編譯時由預處理器將它和訊息文字拼接成乙個字串,因此printk 函式中日誌級別巨集和格式字串間不能有逗號。下面是兩個print...

linux核心的列印printk的級別

有時除錯核心模組,列印資訊太多了,可以通過修改 proc sys kernel printk檔案內容來控制。預設設定是6 4 1 7 cat proc sys kernel printk 7 4 1 7 該檔案有四個數字值,它們根據日誌記錄訊息的重要性,定義將其傳送到何處。關於不同日誌級別的更多資訊...

調整核心log列印級別

有時除錯核心模組,列印資訊太多了,可以通過修改 proc sys kernel printk檔案內容來控制。echo 7 proc sys kernel printk 預設設定是7 4 1 7 cat proc sys kernel printk 7 4 1 7 控制台日誌級別 優先順序高於該值的訊...