日誌

使用者導向的概覽(CLI + Control UI + 設定)請參閱 /logging

OpenClaw 有兩個日誌「輸出面」:

  • 終端輸出(你在 terminal / Debug UI 看到的)。
  • 檔案日誌(JSON lines),由 gateway logger 寫入。

檔案日誌

  • 預設在 /tmp/openclaw/ 下產生滾動式日誌檔(每天一個):openclaw-YYYY-MM-DD.log
    • 日期使用 gateway 主機的本地時區。
  • 日誌檔路徑和等級可透過 ~/.openclaw/openclaw.json 設定:
    • logging.file
    • logging.level

檔案格式是每行一個 JSON 物件。

Control UI 的 Logs 頁籤透過 gateway(logs.tail)讀取此檔案。 CLI 也可以做同樣的事:

openclaw logs --follow

Verbose 與日誌等級

  • 檔案日誌完全由 logging.level 控制。
  • --verbose 只影響終端的詳細程度(和 WS 日誌樣式);它不會提高檔案日誌等級。
  • 要在檔案日誌中記錄 verbose 等級的細節,將 logging.level 設為 debugtrace

終端擷取

CLI 會擷取 console.log/info/warn/error/debug/trace 並寫入檔案日誌,同時仍然印到 stdout/stderr。

你可以獨立調整終端的詳細程度:

  • logging.consoleLevel(預設 info
  • logging.consoleStylepretty | compact | json

工具摘要脫敏

詳細的工具摘要(例如 🛠️ Exec: ...)可以在輸出到終端前遮蔽敏感 token。這只針對工具輸出,不影響檔案日誌。

  • logging.redactSensitiveoff | tools(預設:tools
  • logging.redactPatterns:正規表示式字串陣列(會覆寫預設值)
    • 使用原始正規表示式字串(自動加 gi flag),或用 /pattern/flags 自訂 flag。
    • 匹配結果的遮蔽方式:保留前 6 + 後 4 個字元(長度 >= 18 時),否則顯示 ***
    • 預設涵蓋常見的金鑰賦值、CLI flag、JSON 欄位、bearer header、PEM 區塊和常見的 token 前綴。

Gateway WebSocket 日誌

Gateway 以兩種模式印出 WebSocket 協定日誌:

  • 一般模式(無 --verbose:只印「有意義的」RPC 結果:
    • 錯誤(ok=false
    • 慢速呼叫(預設閾值:>= 50ms
    • 解析錯誤
  • Verbose 模式(--verbose:印出所有 WS 請求/回應流量。

WS 日誌樣式

openclaw gateway 支援 per-gateway 的樣式切換:

  • --ws-log auto(預設):一般模式最佳化輸出;verbose 模式使用精簡格式
  • --ws-log compact:verbose 時使用精簡格式(請求/回應配對)
  • --ws-log full:verbose 時完整的逐訊框輸出
  • --compact--ws-log compact 的別名

範例:

# 最佳化(只有錯誤/慢速呼叫)
openclaw gateway

# 顯示所有 WS 流量(配對格式)
openclaw gateway --verbose --ws-log compact

# 顯示所有 WS 流量(完整中繼資料)
openclaw gateway --verbose --ws-log full

終端格式化(子系統日誌)

終端格式化器會偵測 TTY,印出一致的前綴行。子系統 logger 讓輸出分組且易於掃描。

行為:

  • 每行都有子系統前綴(例如 [gateway][canvas][tailscale]
  • 子系統顏色(每個子系統穩定配色)加上等級顏色
  • TTY 或類 rich terminal 環境時啟用色彩TERM/COLORTERM/TERM_PROGRAM),尊重 NO_COLOR
  • 縮短的子系統前綴:省略開頭的 gateway/ + channels/,只保留最後 2 段(例如 whatsapp/outbound
  • 子 logger 按子系統分(自動前綴 + 結構化欄位 { subsystem }
  • logRaw() 用於 QR/UX 輸出(無前綴、無格式化)
  • 終端樣式pretty | compact | json
  • 終端日誌等級與檔案日誌等級分開(logging.level 設為 debug/trace 時檔案保留完整細節)
  • WhatsApp 訊息內容debug 等級記錄(用 --verbose 才看得到)

這讓既有的檔案日誌保持穩定,同時互動式輸出變得易於掃描。