查看記錄

記錄主要是在與實際裝置互動 (「線上」) 環境下使用,或是在 「離線」擷取從裝置執行記錄收集到的記錄

排序

所有記錄都會附加時間戳記,系統會在記錄 撰寫新的電子郵件訊息LogSink 接收訊息的順序有很多種 根據時間戳記

主要的 fuchsia.logger.Log 實作會將透過 LogMany 傳送的訊息排序 fuchsia.logger.LogListenerSafe 的方法。每當您傳送 傳送給新連結的事件監聽器。不過,如果郵件首次送達 順序不正確的時間戳記,任何有效聽眾都會以任意順序接收這些時間戳記。工具 可顯示從連續呼叫 fuchsia.logger/LogListenerSafe.Log 所累積的記錄檔 在收到訊息時提醒使用者,但時間戳記沒有絕對線性順序。

線上

由於有兩個緩衝區儲存記錄,因此當您有需要儲存記錄的緩衝區時,主要有兩種方法可以查看 即時裝置。如要進一步瞭解記錄儲存在裝置上的位置,請參閱「概念:儲存空間」一文。

Syslog 和核心記錄

在開發期間,執行 ffx log 是查看所有記錄的理想預設值。其實 指令會執行 log_listener 程式,輸出系統傳送的每則訊息 。包括從 Klog 轉送的項目。

log_listener 會透過 fuchsia.logger.Logfuchsia.logger.LogListenerSafe 通訊協定。

此外,系統也會將部分 syslog 記錄列印至序列控制台。根據預設,這包括 驅動程式庫和 driver_manager 記錄。

格式

log_listener 根據預設,會發出採用以下格式的程式碼行:

[seconds][pid][tid][tags] LEVEL: message

時間戳記預設來自單調時鐘,格式為微秒 精細調整

如果系統顯示「發生問題」訊息由 model=1902 的元件層級寫入 WARN 及執行緒=1904 時,預設輸出為:

[278.14][1902][1904][my-component] WARN: something happened

log_listener--hide_metadata--pretty 旗標,可減少列印的中繼資料。 以及顏色代碼記錄行使用這些標記將隱藏部分中繼資料 (PID、TID 等),其他則需刪減 (時間戳記、嚴重性)。

舉例來說,如果訊息是「發生任何問題」的訊息,是由我的元件在 WARN 等級列印 time=278.14, 漂亮的輸出內容會像這樣:

[278.14][my-component][W] something happened

在使用執行中的裝置時,執行 ffx log --help 即可查看修改輸出格式的選項。

fx test

實際上,fx test 呼叫 run-test-suite,這會收集獨立的 stdoutstderrLogSink來自測試元件的連線,內嵌輸出內容並禁止顯示 寫入全域記錄緩衝區中

對於非元件的測試,系統不會攔截記錄檔。

僅限核心記錄

klog 會在核心主控台列印和序列。

此外,它也透過 UDP 經由 netsvc 轉送,也就是執行 fx klog 時輸出的內容。執行中 如果 SSH 工作階段失敗,背景終端機中的 fx klog 是擷取記錄的好方法,或 做為執行 ffx log 時有其他問題。

如果上述方法都無效,您也可以直接從裝置殼層使用 dlog 傾印 核心偵錯記錄檔

格式

核心記錄的轉儲器會以下列格式發出行:

[timestamp] pid:tid> message

時間戳記來自單調時鐘。並包含 5 位數 (開頭的零), 毫秒和三位數代表毫秒 (結尾為零)。

程序和執行緒變數均以 5 位數字 (開頭的零) 撰寫。

如果系統顯示「發生問題」訊息都是從 process=1902 開始,執行緒=1904 的時態為 278.14, 輸出結果應為:

[00278.140] 01902:01904> something happened

fx pretty_serial 指令可用來減少 klog 和顏色代碼列印的中繼資料 記錄線條如要使用這個指令,系統會隱藏部分中繼資料 (PID、TID、檔案名稱等) 其他則需被刪減 (時間戳記、嚴重性)。

序列輸出內容應透過模擬器或其他來源插入:

ffx emu start --console | ffx debug symbolize

舉例來說,如果訊息是「發生任何問題」的訊息,是在 WARN 等級的 klog 列印在 Klog 中 例如:

[278.14][my-component][W] something happened

舉例來說,如果訊息是「發生任何問題」的訊息,會透過含有 Transformer 的不明元件 嚴重性達_278.14,則漂亮的輸出內容如下:

[278.14] something happened

離線:CQ/GI

執行測試時,Swarming 機器人會叫用 Botanist,該機器人會收集多個要輸出的輸出內容串流 都只是在網頁版 UI 中直接顯示stdout和植物學家的 stderr 是「激烈任務」中呈現的內容 UI」

個別測試執行檔的殭屍人員會使用 testrunner lib,然後分別收集該輸出內容。 這是在測試失敗後看到的輸出內容,其連結名為 stdio。大部分 testRunner 叫用透過 SSH 執行 run-test-suite 至目標裝置。這會收集 stdout、stderr 和記錄,並以內嵌方式列印。

syslog.txt

機器人會在目標裝置上執行 log_listener,並將輸出內容儲存到 syslog.txt。這是 與在開發機器上執行 ffx log 類似。

infra_and_test_std_and_klog.txt

此記錄包含 Swarming 工作所執行指令的 stdout 和 stderr。 通常包含下列項目,所有交錯方向:

  • botanist 的記錄訊息
  • 來自 netsvc 的核心記錄 (相當於 fx klog)
  • 由 testRunner 執行的 stdoutstderr 測試

這個匯總記錄會在上傳前對 ffx debug symbolize 執行。