Linux系統中日志級別詳情


日志信息分類

1.等級由低到高:debug<info<warn<Error<Fatal;

2.區別:

debug 級別最低,可以隨意的使用於任何覺得有利於在調試時更詳細的了解系統運行狀態的東東;

info  重要,輸出信息:用來反饋系統的當前狀態給最終用戶的;

后三個,警告、錯誤、嚴重錯誤,這三者應該都在系統運行時檢測到了一個不正常的狀態。

warn, 可修復,系統可繼續運行下去;

Error, 可修復性,但無法確定系統會正常的工作下去;

Fatal, 相當嚴重,可以肯定這種錯誤已經無法修復,並且如果系統繼續運行下去的話后果嚴重。

 3.使用

什么時候使用 info, warn , error ?

info 用於打印程序應該出現的正常狀態信息, 便於追蹤定位;

warn 表明系統出現輕微的不合理但不影響運行和使用;

error 表明出現了系統錯誤和異常,無法正常完成目標操作。

4.格式

總結起來, 錯誤日志格式可以為:

log.error(“[接口名或操作名] [Some Error Msg] happens. [params] [Probably Because]. [Probably need to do].”);

log.error(String.format(“[接口名或操作名] [Some Error Msg] happens. [%s]. [Probably Because]. [Probably need to do].”, params));

log.error(“[Some Error Msg] happens to 錯誤參數或內容 when [in some condition]. [Probably Because]. [Probably need to do].”);

log.error(String.format(“[Some Error Msg] happens to %s when [in some condition]. [Probably Because]. [Probably need to do].”, parameters));

[Probably Reason]. [Probably need to do]. 在某些情況下可以省略; 在一些重要接口和場景下最好能說明一下。

每一條錯誤日志都是獨立的,盡可能完整、具體、直接說明何種場景下發生了什么錯誤,由什么原因導致,要采用什么措施或步驟。

5.意義

錯誤日志是排查問題的重要手段之一。 當我們編程實現一項功能時, 通常會考慮可能發生的各種錯誤及相應原因:

要排查出相應的原因, 就需要一些關鍵描述來定位原因。這就會形成三元組:錯誤現象 -> 錯誤關鍵描述 -> 最終的錯誤原因。

需要針對每一種錯誤盡可能提供相應的錯誤關鍵描述,從而定位到相應的錯誤原因。也就是說,編程的時候,要仔細思考, 哪些描述是非常有利於定位錯誤原因的, 盡可能將這些描述添加到錯誤日志中。

二、相關日志目錄

1、內核引導日志目錄

/var/log/dmesg

ssh登陸記錄信息,包括失敗的記錄信息。
/var/log/secure

記錄郵件相關信息
/var/log/maillog

記錄crontab相關信息
/var/log/cron

記錄ftp相關的日志信息
/var/log/xferlog

系統大部分日志,包括login、check password、failed log等
/var/log/messages

三、一些命令
lastlog查看/var/log/lastlog文件的信息
     ①、查看最近root的登陸情況

      Lastlog  -u  root

who、users、finger命令查看/var/run/utmp文件,記錄每個用戶登陸系統的時間
Last命令查看/var/log/wtmp文件,記錄每個用戶登入與登出時間
————————————————

/proc/sys/kernel/printk文件定義了4個數字, 查看日志級別:
cat /proc/sys/kernel/printk
4 4 1 7
①控制台日志級別:優先級高於該值的消息將被打印至控制台。
②缺省的消息日志級別:將用該值來打印沒有優先級的消息。
③最低的控制台日志級別:控制台日志級別可能被設置的最小值。
④缺省的控制台:控制台日志級別的缺省值。
日志緩沖區的每一行文本開頭具有級別標記, 級別值越小則優先級越高.

系統定義了8個消息級別, 級別號從0到7分別為:

致命級(KERN_EMESG),

警戒級(KERN_ALERT),

臨界級(KERN_CRIT),
錯誤級(KERN_ERR),

告警級(KERN_WARN),

注意級(KERN_NOTICE),

通知級(KERN_INFO),
調試級(KERN_DEBUG).

修改日志級別:

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

 

log4j定義了8個級別的log(除去OFF和ALL,可以說分為6個級別),優先級從高到低依次為:OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、 ALL。

ALL 最低等級的,用於打開所有日志記錄。

TRACE designates finer-grained informational events than the DEBUG.Since:1.2.12,很低的日志級別,一般不會使用。

DEBUG 指出細粒度信息事件對調試應用程序是非常有幫助的,主要用於開發過程中打印一些運行信息。

INFO 消息在粗粒度級別上突出強調應用程序的運行過程。打印一些你感興趣的或者重要的信息,這個可以用於生產環境中輸出程序運行的一些重要信息,但是不能濫用,避免打印過多的日志。

WARN 表明會出現潛在錯誤的情形,有些信息不是錯誤信息,但是也要給程序員的一些提示。

ERROR 指出雖然發生錯誤事件,但仍然不影響系統的繼續運行。打印錯誤和異常信息,如果不想輸出太多的日志,可以使用這個級別。

FATAL 指出每個嚴重的錯誤事件將會導致應用程序的退出。這個級別比較高了。重大錯誤,這種級別你可以直接停止程序了。

OFF 最高等級的,用於關閉所有日志記錄。

如果將log level設置在某一個級別上,那么比此級別優先級高的log都能打印出來。例如,如果設置優先級為WARN,那么OFF、FATAL、ERROR、WARN 4個級別的log能正常輸出,而INFO、DEBUG、TRACE、 ALL級別的log則會被忽略。Log4j建議只使用四個級別,優先級從高到低分別是ERROR、WARN、INFO、DEBUG。

從我們實驗的結果可以看出,log4j默認的優先級為ERROR或者WARN(實際上是ERROR)。
————————————————

當系統崩潰修復時,會產生大量系統日志,不便於關鍵信息獲取,通過修改系統日志打印界別,可突出所需級別的日志信息,便於查找。

查詢串口日志級別

在 OS 執行cat /proc/sys/kernel/printk命令,返回信息中“3”表示串口日志級別:

linux-70u8:~ # cat /proc/sys/kernel/printk
3       4         1        7

修改串口日志級別

修改Linux系統日志打印級別 說明:

該方法只對當次運行有效,OS重啟后串口日志級別恢復為配置文件定義的級別。

在 OS 執行echo N > /proc/sys/kernel/printk命令,N 表示要設置的串口日志級別,相關說明如表11-3所示。

linux-70u8:~ # echo 7 > /proc/sys/kernel/printk
linux-70u8:~ # cat /proc/sys/kernel/printk
7       4         1        7
表11-3 串口日志級別說明

級別

對應內核日志級別

說明

0

KERN_EMERG

緊急消息。系統崩潰之前提示,表示系統已不可用。

1

KERN_ALERT

報告消息。表示必須立即采取措施。

2

KERN_CRIT

臨界消息。通常涉及嚴重的硬件或軟件操作失敗。

3

KERN_ERR

錯誤消息。串口日志的默認級別。驅動程序常用 KERN_ERR 來報告硬件的錯誤。

4

KERN_WARNING

警告消息。對可能出現問題的情況進行警告。

5

KERN_NOTICE

正常但又重要的消息。用於提醒,常用於與安全相關的消息。

6

KERN_INFO

提示消息。如驅動程序啟動時,打印硬件消息。

7

KERN_DEBUG

調試消息。設置此級別會打印所有日志消息。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM