日誌的5個級別

2021-09-17 20:16:30 字數 2151 閱讀 1254

本文最初發布於aib42個人**,經原作者授權由infoq中文站翻譯並分享。

\\ 日誌記錄是軟體開發的乙個概念,幾乎所有(可能並不是所有)軟體都能從日誌記錄中獲得很多好處。在開始乙個大專案時,日誌記錄通常是我第乙個要搭建的子系統。關於它的好處,我可以說出一大堆,但我想把這個機會留給其他人(或者哪一天我想說了再說)。現在,我想說一說日誌級別。

\\ 日誌級別是對基本的「滾動文字」式日誌記錄的乙個重要補充。每條日誌訊息都會基於其重要性或嚴重程度分配到乙個日誌級別。例如,「你的電腦著火了」是乙個非常重要的訊息,而「無法找到配置檔案」的重要等級可能就低一些。

\\ 很多應用程式和庫會根據自己或使用者的需求定義自己的日誌級別(參考文末的「外部例子」了解這方面的內容)。當然,並沒有一種約定俗成的方法來做這件事,想怎麼做都是可以的,但我想要說說我認為的最重要的五個(或者六個,或者四個)日誌級別,它們應該是你自定義日誌級別的基礎。

\\ 我還將討論給這些級別分配的顏色(或者說風格),因為帶有不同顏色(或風格)的日誌更容易追蹤。如果採用了這樣的系統,就可以很容易檢查你的程式狀態,就算沒有受過訓練的人也可以輕易分辨。誰知道呢,你可能留下電腦跑去吃午飯了,如果出現問題只能找別人來檢視日誌。

\\\\

錯誤已經發生了,這是毫無疑問的。錯誤的**可能是在外部,但不管怎樣都需要看一下是怎麼回事。

\\ 可以用這個級別來表示需要引起人們注意(大多數時候需要採取行動)的錯誤。大多數難以優雅處理的異常都屬於error範疇。

\\風格:能引起人們注意的東西。我使用紅色文本來表示(我的終端背景是黑色的)。

\\例子

\\\\

錯誤有可能已經發生了。我只是一條日誌訊息,無法分析到底發生了什麼,或許需要其他人來看看是不是有問題。

\\ 這可能是乙個平行空間裡的錯誤。它可能是當前或未來潛在問題(比如響應速度慢、連線斷開、記憶體吃緊等等)的預兆,也可能是程式在處理某些任務時出現錯誤(但可能不一會再發生類似的情況)。

\\風格:能引起人們注意但又不會讓人感到厭煩的風格,以免你在解決其他問題時沒空來處理這些錯誤。與error的風格不同,我使用黃色的文本來表示warn。

\\例子

\\\\

通知使用者乙個操作或狀態發生了變化。別緊張,繼續手頭的活。

\\ info可以說是(一般的非技術)使用者可以接觸到的最「囉嗦」的日誌級別。如果有人把它們大聲念給你聽,你也不會介意,這是你最樂於見到的日誌記錄。它不會包含很多技術細節,可能只包含普通使用者會關注的資訊(比如檔名等)。

\\風格:可以和背景顏色區分開來,我使用白色文字。

\\例子

\\\\

如果你能讀懂這個級別的日誌,那麼你離程式已經很近了。

\\ 這就是為什麼你需要儲存日誌檔案,在修復bug時需要這些日誌。這是開發人員最關心的內容。

\\ 在轉儲程式執行流程和其他技術問題時,應該使用debug級別的日誌。除非日誌太多了(在這種情況下使用trace級別更合適)或者更適合使用更高階別的日誌,否則debug日誌是非常值得保留的,畢竟是你自己在**中記錄這些日誌的。如果和其他的debug或更高階別的訊息重疊,而且沒有包含更多的資訊,那麼可以考慮將其刪除。

\\風格:可以很容易就忽略的風格。我使用淺灰色或公尺黃色文字,也就是我的終端的預設文字顏色。

\\例子

\\\\

這些技術細節可能與程式不是很相干,除非你正好需要它們。

\\ trace的資訊是更加具體的除錯資訊,你可能並不想看到它(除非你向儲存日誌的人賣硬碟的時候需要)。它會包含比如說呼叫了什麼函式(函式名),或是和客戶端交換了什麼網路包等內容。它善於找到一些低階錯誤,但通常你可以在除錯訊息中縮小範圍,找到問題。

\\ 大多數trace訊息包含了你已經知道的資訊(debug訊息中說了是「登入」,所以這肯定是登入相關的資料報),所以可能對你不是很有用,除非你的假設是錯誤的。(」它會不會是登出訊息?!「、」這裡應該呼叫foo。為什麼foo的trace資訊沒有列印出來呢?」)

\\風格:使用比debug訊息更加不顯眼的風格。我使用深灰色,通常用來表示禁用的顏色。

\\例子:\\

日誌的5個級別

本文最初發布於aib42個人 經原作者授權由infoq中文站翻譯並分享。日誌記錄是軟體開發的乙個概念,幾乎所有 可能並不是所有 軟體都能從日誌記錄中獲得很多好處。在開始乙個大專案時,日誌記錄通常是我第乙個要搭建的子系統。關於它的好處,我可以說出一大堆,但我想把這個機會留給其他人 或者哪一天我想說了再...

日誌的5個級別

本文最初發布於aib42個人 經原作者授權由infoq中文站翻譯並分享。日誌記錄是軟體開發的乙個概念,幾乎所有 可能並不是所有 軟體都能從日誌記錄中獲得很多好處。在開始乙個大專案時,日誌記錄通常是我第乙個要搭建的子系統。關於它的好處,我可以說出一大堆,但我想把這個機會留給其他人 或者哪一天我想說了再...

日誌的5個級別

本文最初發布於aib42個人 經原作者授權由infoq中文站翻譯並分享。日誌記錄是軟體開發的乙個概念,幾乎所有 可能並不是所有 軟體都能從日誌記錄中獲得很多好處。在開始乙個大專案時,日誌記錄通常是我第乙個要搭建的子系統。關於它的好處,我可以說出一大堆,但我想把這個機會留給其他人 或者哪一天我想說了再...