ffx log
指令可監控及篩選 Fuchsia 裝置的記錄訊息。
概念
ffx
守護程序會在主機上執行背景作業,主動探索 Fuchsia 裝置,並在裝置可連線時自動連線。啟用主動記錄功能 (ffx
的預設設定) 後,ffx
Daemon 會開始從目標裝置讀取裝置記錄,並在主機機器上快取記錄檔,直到達到設定的空間限制為止。
主機上儲存的記錄達到空間限制時,系統會輪替記錄,也就是刪除最舊的記錄,騰出空間存放最新的記錄。此外,在從裝置讀取記錄並寫入主機機器的快取之前,記錄會在背景符號化。
根據預設,ffx log
指令會輸出所有裝置記錄並保持連線開啟,以持續串流來自目標裝置的新記錄。
監控裝置記錄
如要即時監控裝置記錄,請執行下列指令:
ffx log
這個指令會輸出類似以下的內容:
$ ffx log
[2022-03-29 18:43:40.973][<ffx>]: logger started.
[0.000][klog][klog][I] printing enabled
[0.000][klog][klog][I] INIT: cpu 0, calling hook 0xffffffff00177fc0 (elf_build_id) at level 0x1, flags 0x1
[0.000][klog][klog][I] ACPI LITE: Found valid RSDT table at physical address 0x7ffe21cc
[0.000][klog][klog][I] PMM: boot reserve add [0x100000, 0x488fff]
[0.000][klog][klog][I] PMM: boot reserve add [0x3502000, 0x46d7fff]
[0.000][klog][klog][I] PMM: adding arena 0xffffffff00485128 name 'memory' base 0x100000 size 0x7fede000
[0.000][klog][klog][I] PMM: adding arena 0xffffffff00485128 name 'memory' base 0x100000000 size 0x180000000
[0.000][klog][klog][I] PMM: boot reserve marking WIRED [0x100000, 0x488fff]
[0.000][klog][klog][I] PMM: boot reserve marking WIRED [0x3502000, 0x46d7fff]
[0.000][klog][klog][I] UART: kernel serial enabled: port=0x3f8, irq=0x4
[0.000][klog][klog][I] UART: enabled with FIFO depth 64
[0.000][klog][klog][I] INIT: cpu 0, calling hook 0xffffffff00342380 (intel_rng_init) at level 0x20001, flags 0x1
[0.000][klog][klog][I] INIT: cpu 0, calling hook 0xffffffff0015dee0 (global_prng_seed) at level 0x20002, flags 0x1
[0.000][klog][klog][I]
[0.000][klog][klog][I] welcome to Zircon
[0.000][klog][klog][I]
[0.000][klog][klog][I] KASLR: .text section at 0xffffffff00100000
[0.000][klog][klog][I] initializing arch pre-vm
...
按下 CTRL+C
即可結束。
篩選裝置記錄檔
如要即時篩選裝置記錄,請執行下列指令:
ffx log --filter <STRING>
將 STRING
替換為要用來篩選記錄的字串。如果路徑包含空格,請在路徑前後加上引號 (""
)。
以下範例會監控裝置記錄,並只顯示包含 Hello, World!
字串的訊息:
$ ffx log --filter "Hello, World!"
[252.071][core/ffx-laboratory:hello_world][][I] Hello, World!
按下 CTRL+C
即可結束。
這項功能的常見用途是選取元件 (例如下方的 hello_world
),然後只監控該元件的記錄:
$ ffx log --filter hello_world
[177262.742][core/pkg-resolver][pkg-resolver][I] Fetching blobs for fuchsia-pkg://fuchsiasamples.com/hello_world: []
[177262.762][core/pkg-resolver][pkg-resolver][I] resolved fuchsia-pkg://fuchsiasamples.com/hello_world as fuchsia-pkg://fuchsiasamples.com/hello_world to ff6a0f00bde933c0fb393405ccf2d4c17e6eabeb9bfc82c9bf91db35693933ca with TUF
[177262.788][core/pkg-resolver][pkg-resolver][I] Fetching blobs for fuchsia-pkg://fuchsiasamples.com/hello_world: []
[177262.789][core/pkg-resolver][pkg-resolver][I] resolved fuchsia-pkg://fuchsiasamples.com/hello_world as fuchsia-pkg://fuchsiasamples.com/hello_world to ff6a0f00bde933c0fb393405ccf2d4c17e6eabeb9bfc82c9bf91db35693933ca with TUF
[177262.816][core/ffx-laboratory:hello_world][][I] Hello, World!
根據記錄層級篩選裝置記錄
如要根據裝置記錄層級即時篩選裝置記錄,請執行下列指令:
ffx log --severity <LOG_LEVEL>
將 LOG_LEVEL
替換為要用來篩選記錄的記錄層級。支援的記錄層級為 error
、warn
、info
、debug
和 trace
。
以下範例會監控裝置記錄,並只輸出記錄層級 WARN
的訊息:
$ ffx log --severity warn
...
[166547.984][core/network/netstack][netstack,DHCP][W] client.go(692): ethp0004: recv timeout waiting for dhcpOFFER; retransmitting dhcpDISCOVER
[166564.788][core/network/netstack][netstack,DHCP][W] client.go(692): ethp0004: recv timeout waiting for dhcpOFFER; retransmitting dhcpDISCOVER
[166567.571][core/wlancfg][wlancfg_lib::client::scan,wlan][W] Failed to get an SME proxy for scan: no client ifaces available
[166567.571][core/session-manager/session:session/workstation_session/login_shell/ermine_shell][ermine][W] Error encountered during scan: MethodException: ScanErrorCode(1)
[166568.746][core/detect][detect][W] Snapshot trigger was missing: ValueError: Division by zero
[166568.749][core/detect][detect][W] Snapshot trigger was missing: ValueError: Division by zero
按下 CTRL+C
即可結束。
傾印裝置記錄
ffx log dump
指令會列印工作階段中的所有裝置記錄,並立即結束。
如要轉儲所有裝置記錄,請執行下列指令:
ffx log dump
這個指令會顯示類似 ffx log
的輸出內容,但在輸出記錄後結束。
轉儲先前工作階段的裝置記錄
ffx log dump
指令可列印目標裝置前一個工作階段的裝置記錄。
如要將所選工作階段的裝置記錄轉儲,請執行下列指令:
ffx log dump <SESSION_NUMBER>
將 SESSION_NUMBER
替換為數字 ~
做為前置字元,例如 ~1
、~2
、~3,
等。
以下範例會列印上一個工作階段的裝置記錄:
$ ffx log dump ~2
每次啟動裝置時都會啟動工作階段。就工作階段編號而言,請將 0
保留給裝置上目前的有效工作階段。之後,~1
是最近的工作階段 (也就是上次重新啟動之前的工作階段),~2
則是最後一個上一個工作階段。
傾印裝置記錄
如要轉儲從過去某個特定時間開始的裝置記錄,請執行下列指令:
ffx log --since <TIME> dump
請將 TIME
替換為您想要查看記錄的時間點,採用使用者可理解的格式 (例如 "30m ago"
或 "2h ago"
)。
以下範例會列印 5 分鐘前至最新訊息的裝置記錄:
$ ffx log --since "5m ago" dump