精靈程序應該向日誌或者stdout輸出什麼資訊,不應該輸出什麼資訊?

時間 2021-06-05 17:09:43

1樓:farseerfc

問題提到了 debug 和 release ,一般在程式碼裡面會有更多日誌等級:

Critical遇到了不可恢復的故障,必須立刻停止服務,讓管理員介入調查,輸出退出的原因。這種錯誤應該不會天天發生,一旦發生就必須立刻通過郵件通知等方式聯絡到管理員。

Error遇到了嚴重的故障不能完成目標任務,但是可以繼續提供服務(比如可以繼續接受別的任務請求)。輸出不可完成的任務的資訊和故障的原因。這種錯誤在除錯的時候應該及時通知管理員,在生產運營的時候應該留下足夠現場狀況讓管理員追查問題,期待管理員會每天逐條審視這類日誌。

Warning遇到了與預期不一致的情況,或者可能性極小的罕見情況,可能是今後將要發生的故障的導火索,但是現階段還不能確定是故障,仍舊可以一板一眼地執行下去。傳遞可能導致故障的蛛絲馬跡的資訊。

Info記錄任務資訊,比如讀到了什麼配置選項,收到了什麼輸入請求,完成了多少進度,幫助管理員理解軟體現在的一舉一動是否符合預期的行為。

Debug提供只有開發者(而不是管理員)會關心的細節資訊,用於確定可能的故障究竟是輸入和配置的問題還是軟體本身的 bug 。可以記錄不會出現在配置檔案中的模組名,使用的演算法等等實現的細節。

Trace提供完整的呼叫相關上下文資訊,進入了什麼函式,退出了什麼函式,通過這些資訊能讓開發者快速定位目前執行到程式碼的何處,處於怎樣的狀態。

然後要讓這些日誌等級可以配置。為了避免生成的程式二進位製過大,可能需要在編譯選項(./configure)開啟 Debug 和 Trace ,這些就是 debug 狀態下的輸出。

然執行期應該能通過配置檔案或者程式引數配置 Info 以上的日誌等級,這些就是 release 狀態下的輸出。

管理員可能會選擇一般環境下開在 Error 或者 Warning 等級,遇到問題想要診斷問題的時候可能會開到 Info 等級,要讓這些等級的輸出在沒有原始碼的前提下就能看懂。

個人覺得只要能夠提供配置選項關閉,站在開發者角度來看日誌資訊應該越多越詳細越好,畢竟很多問題遇到的機會只有一次,現在的伺服器系統資源一般也充足,足夠放下海量日誌,還能給今後通過分析日誌尋找軟體功能的突破點留下機會。

是否應該向他表白?

勃妞喜歡大璐 本人心裡還是很介意他高中談過女朋友 我覺得這沒什麼好介意的,只要沒乾過那事 沒有信心和他走到最後,因為對他沒有信心 他如果很差的話那就換一家。 低頭看天 如果你認為對他足夠了解,感覺和他在一起沒有信心走下去,還介意他之前有過物件,還是算了,何必委屈自己,一開始就沒有那麼喜歡,時間越長,...

父母應該向孩子道歉嗎

飛貓讀書 大部分父母,明明知道自己錯了,在孩子面前卻死活要保持家長的臉面和權威,絕對不會向孩子認錯,甚至有時還要為自己的錯誤開脫。其實啊,孩子在出生後幾個月內,就明白了父母不是萬能的道理。這是在 療癒你的內在小孩 這本書中,重新整理的乙個新的知識點。這一點往往被家長忽略,以為自己的尊嚴是牢不可破的,...

應該向喜歡的人表白嗎

寒江獨釣 既然放不下,就告訴他吧!給自己乙個解脫也給自己乙份希望。如果覺得難以啟齒,就閒聊一些彼此感興趣的話題,增進了解也增加好感度。可以期待水到渠成,也可以做表白前的鋪墊。讓感覺自然,讓表白順利。無論結果怎樣,都給自己青澀的萌動加蓋了印章。 我要去山上看風景 這讓我想到了之前的一段往事,事情發生在...