存取記錄檔

如同其他診斷資料,您可以透過 Archivis 的 ArchiveAccessor 通訊協定讀取記錄。 如需 API 及其使用方式的一般資訊,請參閱 ArchiveAccessor 參考資料

參數

StreamParameters 會傳遞至 StreamDiagnostics 方法以初始化 BatchIterator

DataType

傳送 LOGS 資料類型,以要求 Archivist 的記錄。

StreamMode

記錄範圍涵蓋 SNAPSHOTSNAPSHOT_THEN_SUBSCRIBESUBSCRIBE

格式

目前僅支援 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 中的其他資料類型一樣 每個物件都包含數個欄位,但 metadatapayload 的內容有所不同 資料來源:

{
    "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 取代,且會在