指令記錄檔

ffx logffx 內建的記錄檢視公用程式。本指南說明如何 設定並使用 ffx log 查看 Fuchsia 裝置上的記錄。

如要啟動記錄檢視器,請執行下列指令:

ffx log

這個指令會列印目前的記錄內容,並讓連線保持開啟狀態,以便串流傳輸新的記錄項目。如要列印記錄目前的內容並結束,請使用 dump

ffx log dump

主動記錄

執行 ffx 指令後,ffx 守護程序會持續在背景運作。會主動使用 Daemon 探索 Fuchsia 裝置,然後在裝置連線時進行連線。

透過主動式記錄功能,ffx 守護程序會在目標裝置連線後,立即在背景讀取記錄。記錄會在主機上快取,最多可達設定的空間限制。達到聊天室上限時,記錄會「旋轉」:系統會刪除最舊的記錄,以騰出空間 最新推出的遊戲

這表示當您透過 ffx log 查看記錄時,記錄實際上會從 主機機器,而不是直接從目標裝置存取。一般來說,這不會對記錄檢視器造成任何明顯的延遲,除非在極少數情況下,裝置產生的記錄量極大。

功能

由於記錄是在主機電腦上快取,因此您可以查看目標從目標快取的記錄 執行的裝置。舉例來說,如果裝置發生當機,您可能可以查看當機前不久的記錄 (如果記錄已及時快取)。

您可以使用 ffx log dump 查看前一個工作階段的記錄。舉例來說,如要查看裝置上次啟動時的記錄:

ffx --target <NODENAME> log dump ~1

~1 會識別與您要查看的最新工作階段相關聯的工作階段,其中 0 是保留給該目標裝置目前有效的工作階段 (無論目前是否存在有效的工作階段)。您可以使用 ~2~3 等查看先前的啟動。

設定

有 3 項與主動式記錄快取相關的配置設定:

  • proactive_log.max_sessions_per_target:主機上可保留在快取中的啟動工作階段數量上限。預設值為 5 (也就是說,重新啟動 6 次後,系統會將最早的啟動工作階段記錄刪除)。
  • proactive_log.max_session_size_bytes:每個工作階段要快取的位元組數上限。 預設值為 100 MB (也就是說,當磁碟上的記錄檔達到 100 MB 後,系統會刪除該工作階段最久未使用的記錄檔)
  • proactive_log.max_log_size_bytes:在單一記錄區塊中使用的位元組數上限。 一般來說,您不需要變更這項設定。預設值為 1MB。

符號化

記錄會在背景中以符號表示,因為記錄會從裝置讀取 (在寫入主機記錄快取之前)。不過,這項背景處理作業代表 symbolizer 主機工具或符號索引的錯誤設定,可能會導致記錄未經過符號化,且沒有任何可見的警告。設定 symbolizer 工具時發生的錯誤會記錄到 ffx 守護程式記錄檔。

使用 Fuchsia 來源檢查設定的使用者不需要進行任何額外設定,系統會自動進行符號化,就像在 fx log 中一樣。在沒有 Fuchsia 來源的情況下工作的使用者 結帳設定必須根據開發環境,設定合適的符號索引。

ffx log 指令會嘗試偵測 symbolizer 工具中的常見設定錯誤,但無法偵測 可以偵測所有這些內容如果未對記錄檔進行符號化處理,請 回報錯誤

設定符號化工具

符號化有兩個設定參數:

  • proactive_log.symbolize.enabled:切換是否嘗試符號化。預設值為 true
  • proactive_log.symbolize.extra_args:直接傳遞至 symbolizer 主機工具的其他參數原始字串。例如,可用來設定遠端符號伺服器。預設 為 ""

篩選記錄檔

ffx log 指令提供額外選項,可篩選從目標裝置擷取的記錄。您可以根據時間戳記、元件、標記或記錄層級,將篩選器套用至記錄。

ffx log --filter hello-world --severity error

如需篩選選項的完整清單,請執行 ffx log --help

記錄設定

記錄篩選器會修改 ffx log 顯示記錄的方式,但不會影響 目標裝置上的元件產生的記錄項目。使用 --set-severity 選項,在記錄工作階段中傳送要求,以便設定特定元件的記錄設定。此操作可將記錄層級調整至任何與指定值相符的元件 元件選取器

ffx log --set-severity component-selector#log-level

您可以使用這個選項,暫時啟用低於 元件 (例如 DEBUGTRACE 記錄),或是隱藏來自元件的雜訊記錄,以利改進 才需進行

以下範例會為 core/audio 元件啟用偵錯記錄,並抑制網路元件傳回的錯誤訊息以外的所有記錄訊息:

$ ffx log --set-severity core/audio#DEBUG --set-severity core/network/**#ERROR