階段 9 · 被看見與成長

Logging

記錄系統執行過程、錯誤、請求與關鍵事件。

先用一句話理解

記錄系統執行過程、錯誤、請求與關鍵事件。

打個比方

像營業日誌,出了問題能回查發生什麼事。

什麼時候會遇到

排查 bug、付款問題、API 異常與客戶回報時。

再往深一點看

Logging 是把程式執行過程中的事件一條條寫下來:哪個使用者在幾點觸發了哪支 API、參數是什麼、回應了什麼、有沒有跑進 catch 區塊——這些都是 log 的內容。它和 monitoring 的角色不同:monitoring 是即時警報系統,告訴你「現在有問題」;logging 是事後調查的原始資料,讓你重建「問題發生時到底發生了什麼」。log 本身不會主動提醒你,需要結合 monitoring 工具(如 Sentry)或手動查詢才能發揮作用。Node.js 後端常用 console.log 起步,正式環境則建議用結構化格式(如 JSON)輸出,讓 Vercel Functions 或 Datadog 這類平台能更容易過濾與搜尋。

舉個例子

使用者回報付款成功但訂單狀態沒更新。你打開 Vercel 的 Functions log,找到那筆請求的紀錄,發現 webhook 收到 Stripe 事件後確實跑進了 catch——原來是資料庫欄位型別不符、更新失敗,但因為沒有把 catch 裡的錯誤 log 出來,當下完全無聲無息。有了這條 log,你 10 分鐘內定位到問題;沒有它,可能要盲測好幾個小時。

常見誤解

  • - 在 catch 區塊裡什麼都不 log,或只寫 console.log('error'),沒有印出實際的錯誤物件與上下文,出了問題完全無從追查。
  • - 在 log 裡印出使用者密碼、信用卡號或 API 金鑰這類敏感資料,一旦 log 被他人存取就造成資安事故。
  • - 每個地方都用不同格式 log,有時是字串、有時是 JSON、有時夾雜中文備注,事後在平台上過濾或用程式解析時完全對不上。

相關名詞

相關服務

SentryVercel

相關工具