Johannes Brodwall

過度記錄的問題#

當作者接手一個已經開發或上線一段時間的系統時,真正麻煩的第一個徵兆永遠是髒亂的日誌(dirty log)。在網頁上點擊一個普通連結,系統就產生鋪天蓋地的日誌訊息——過多的記錄和沒有記錄一樣無用

為什麼日誌很重要#

  • 你的工作結束後,系統才剛開始它的生命——它將長期服務客戶
  • 當生產環境出問題時,日誌通常是監控的核心部分
  • 如果系統正在死亡,你需要知道;如果只是小打嗝,你寧可繼續安睡

第一天起就確保:如果某訊息被記錄到 error log,你願意為此在半夜被叫醒來處理。如果你不願意,那它就不該出現在 error log 中。

分散式系統的挑戰#

分散式系統增加了另一層複雜度——你必須決定如何處理外部依賴的失敗。如果系統高度分散,這可能是常見事件,確保你的**日誌政策(logging policy)**將此納入考量。

乾淨日誌的原則#

  • 最佳指標:一切正常的最好指標是低優先級的訊息在正常運行。每個重要的應用程式事件只需要大約一條 INFO 級別的日誌訊息
  • 雜亂的日誌是警訊:日誌雜亂代表系統上線後將難以控制
  • 保持 error log 乾淨:如果你不期望 error log 中出現任何東西,當真的有東西出現時,你會更容易知道該怎麼處理

在系統測試期間模擬負載,檢查 error log 是否保持乾淨。乾淨的 error log 是系統足夠健壯的良好指標——或者是問題的早期警告。