Skip to main content
印出或串流一個執行中的開發工作階段裡每個情境的記錄。 logs 會讀取 dev 工作階段從你的擴充功能收集到的記錄:background、content script、popup、options 以及其餘情境。一個指令就能依序合併顯示全部內容,不必開啟任何一個 DevTools 視窗。

何時使用 logs

  • 你想在同一道串流裡同時看到 background worker 與某個 content script 的主控台輸出。
  • agent 或指令稿需要機器可讀的記錄,而不是從終端機文字裡刮取。
  • 你想查看擴充功能稍早記錄了什麼,而不必重新觸發一次那個行為。

用法

預設情況下,logs 會印出磁碟上已有的記錄然後結束。加上 --follow 可以保持連線,即時串流新的記錄。

參數與 flag

選擇某個 --level 會一併包含該層級以及所有更嚴重的層級。--level warn 會顯示 warnerror。一般的 console.log 記錄算作 info

一次性模式

不加 --follow 時,指令會直接讀取 dist/extension-js/<browser>/logs.ndjson,不需要任何即時連線。開發工作階段會把每一筆記錄附加到那個檔案,所以即使你已經關掉瀏覽器,一次性讀取仍然有效。 如果該檔案不存在,logs 會提示你先啟動 extension dev,並以結束碼 1 結束。機器可讀格式還會輸出一個錯誤碼為 E_LOGS_NOT_FOUND 的失敗信封(參見 結果信封)。

跟隨模式

--follow 會查出工作階段的就緒契約,以記錄消費端的身分連上控制通道,並在記錄產生時串流出來。它需要一個執行中的開發工作階段,但不需要任何解鎖 flag:記錄消費永遠是允許的。
如果串流跟不上、工作階段丟棄了記錄,logs 會在 stderr 上印出一行提示,說明丟棄的筆數與原因。 當你用 Ctrl+C 停止串流時,機器可讀格式會印出一個狀態為 interrupted 的終止成功信封,讓消費端能分辨乾淨的停止與當機。結束碼為 0 如果找不到所選瀏覽器對應的工作階段,指令會以 E_SESSION_NOT_FOUND 失敗,並指名該執行的 extension dev 指令。

輸出格式

pretty 模式每筆記錄印出一行:
ndjson 每行印出一筆原始 JSON 記錄,很適合 jq 與記錄收集器。json 則會把每筆記錄格式化成多行。當 stdout 不是 TTY 時,ndjson 本來就是預設值,因此導管不需要額外的 flag:

範例

只看某個網站上 content script 的錯誤與警告:
從某筆已知記錄之後繼續讀取,適合輪詢的 agent:

後續步驟

  • doctor 診斷 logs --follow 連不上的工作階段。
  • inspect 一次呼叫就同時拿到 DOM 快照與最近的主控台輸出。
  • 除錯 中了解更完整的除錯工作流程。
  • 結果信封 中查看機器可讀的失敗格式。