日誌系統
Luker 內建了完整的日誌擷取和管理系統,涵蓋後端服務和前端瀏覽器兩個層面。當你遇到問題需要排查時,日誌系統能幫助你快速定位原因。
日誌系統是一個獨立的功能模組,不依賴 Luker 的其他功能(如 Memory Graph、CardApp 等),開箱即用。
後端日誌
Luker 的後端日誌系統會自動攔截伺服器端的所有主控台輸出,將日誌儲存在記憶體中供查看。
運作方式
- 自動攔截:服務啟動時,Luker 會自動攔截
console.log、console.warn、console.error等輸出 - 環形緩衝區:日誌儲存在固定大小的記憶體緩衝區中。當緩衝區滿時,最舊的日誌會被自動丟棄,確保不會佔用過多記憶體
- 時間戳和級別:每條日誌都記錄了精確的時間戳和日誌級別(info、warn、error),方便按時間和嚴重程度篩選
查看和管理
管理員可以透過前端管理面板遠端查看伺服器端日誌,無需登入伺服器查看主控台。同時也可以一鍵清空日誌緩衝區。
TIP
後端日誌僅儲存在記憶體中,服務重啟後會清空。如果你需要持久化的日誌記錄,建議將 Luker 的主控台輸出重新導向到檔案。
前端日誌管理器
Luker 還在瀏覽器端內建了一個日誌管理器,用於擷取前端執行時的各種資訊。
Console 攔截
前端日誌管理器會攔截瀏覽器的 console.trace、console.debug、console.log、console.info、console.warn、console.error 六個級別的輸出,將它們寫入記憶體緩衝區(最多保留 3000 條)。
Fetch 請求日誌
除了 console 輸出,前端日誌管理器還會自動記錄瀏覽器發出的 API 請求資訊,包括:
- 請求的方法和路徑
- 回應狀態碼和耗時
- 請求失敗或中止的錯誤資訊
這些資訊經過智慧摘要處理——只擷取關鍵欄位(如模型名稱、訊息數量等),不會記錄完整的請求內容,既保證了除錯價值,又避免了隱私洩露。
全域錯誤擷取
前端日誌管理器還會自動擷取瀏覽器中的未處理錯誤和 Promise 拒絕事件,確保這些容易被忽略的異常也能被記錄下來。
日誌可見性
預設情況下,只有 error 級別的日誌會在瀏覽器主控台中顯示。如果你需要查看更詳細的除錯資訊,可以開啟 debug 模式,此時所有級別的日誌都會輸出到瀏覽器主控台。
無論 debug 模式是否開啟,所有級別的日誌都會被寫入記憶體緩衝區,可以隨時匯出查看。
使用場景
除錯問題
當 Luker 出現異常行為時,日誌系統是最直接的排查工具:
- API 連線失敗 — 查看後端日誌中的錯誤資訊,確認 API 位址和金鑰是否正確
- 生成中斷 — 查看前端日誌中的 Fetch 請求記錄,了解請求是否逾時或被拒絕
- 擴充功能報錯 — 前端日誌會擷取擴充功能執行時的錯誤,幫助定位問題擴充功能
排查錯誤
如果你需要向開發者回報問題,可以匯出前端日誌快照,其中包含了問題發生前後的完整上下文資訊,比單純的截圖更有助於問題定位。
WARNING
日誌中可能包含 API 請求的部分資訊。在分享日誌時,請注意檢查是否包含敏感內容(如 API 金鑰)。前端日誌管理器已經對敏感欄位進行了脫敏處理(例如 CSRF Token 只記錄「存在」而不記錄具體值),但仍建議在分享前檢查一遍。