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 控制台日誌級別 優先順序高於該值的訊...