階段 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