如同其他診斷資料,您可以透過 Archivis 的 ArchiveAccessor 通訊協定讀取記錄。 如需 API 及其使用方式的一般資訊,請參閱 ArchiveAccessor 參考資料。
參數
StreamParameters 會傳遞至 StreamDiagnostics
方法以初始化 BatchIterator。
DataType
傳送 LOGS
資料類型,以要求 Archivist 的記錄。
StreamMode
記錄範圍涵蓋 SNAPSHOT
、SNAPSHOT_THEN_SUBSCRIBE
和 SUBSCRIBE
。
格式
目前僅支援 JSON
。
ClientSelectorConfiguration
目前僅支援 select_all=true
。
batch_retrieval_timeout_seconds
這個選項不適用於要求記錄時,因為 Archivis 必須等待元件產生記錄檔。
結果
結果會以 vector<FormattedContent>
的形式傳回,其中包含每個項目的變數
與要求的格式相符,但目前只支援 JSON 格式。
緩衝區內容
每個緩衝區都包含頂層陣列,且所有的元素都做為物件:
[
{
"metadata": { ... },
"payload": { ... }
},
{
"metadata": { ... },
"payload": { ... }
},
...
]
第二層巢狀結構讓 Archivist 能有效封裝記錄訊息,並同時使用 相同的 API 提供檢查結果,其中剖析的 VMO 與傳回的 VMO 之間會進行 1:1 對應 VMO。
JSON 物件內容
陣列中的每個 JSON 物件都是一則記錄訊息或事件。與 ArchiveAccessor 中的其他資料類型一樣
每個物件都包含數個欄位,但 metadata
和 payload
的內容有所不同
資料來源:
{
"version": 1,
"moniker": "core/network/netstack",
"metadata": {
"timestamp": 1234567890,
"severity": "INFO",
"component_url": "fuchsia-pkg://fuchsia.com/network#meta/netstack.cm",
"size_bytes": 123
},
"payload": {
"root": {
"pid": 78,
"tid": 78,
"tag": "netstack",
"message": "something happened!"
}
}
}
時間戳記
記錄中的時間是使用核心的單調時鐘記錄,並在不使用的情況下傳送 視為無正負號整數。
捨棄的記錄檔
系統會在結果物件的 metadata.errors
欄位中 (即陣列) 傳送捨棄的記錄
時:
{
"metadata": {
...
"errors": [
{
"dropped_logs": {
"count": 3
}
}
]
}
}
錯誤訊息中遺失記錄的訊息,也可能沒有相關聯的 payload
,具體情況如下:
取代郵件的位置。
當生產元件超出其記錄通訊端時,它會遞增 隨後成功的訊息會傳送記錄中繼資料內的欄位。阿奇維斯特 中繼資料,但沒辦法瞭解是否有元件捨棄記錄檔的記錄 (之後記錄檔除外) 所有來自該元件的紀錄中繼資料會以相同格式傳遞至用戶端,做為錯誤 ] 欄位輸入資料。
如果郵件因緩衝區限製而遭到 Archivist 捨棄,則會以合成的方式傳送錯誤 訊息,確保即使指定的生產端沒有記錄,用戶端也會收到通知 可以選取「重新建立」,再次生成新的提示
舊版 API
Archivist 提供 fuchsia.logger.Log
通訊協定,可讓用戶端讀取文字中的記錄
格式。這個 API 已由 fuchsia.diagnostics.ArchiveAccessor
取代,且會在