与其他诊断一样,您可以从 ArchiveAccessor 的 ArchiveAccessor 协议读取日志。 如需了解有关 API 及其用法的常规信息,请参阅 ArchiveAccessor 参考。
参数
系统会将 StreamParameters 传递给 StreamDiagnostics
方法,以初始化 BatchIterator。
DataType
发送 LOGS
数据类型以向 Archivist 请求日志。
StreamMode
您可以通过 SNAPSHOT
、SNAPSHOT_THEN_SUBSCRIBE
和 SUBSCRIBE
模式访问日志。
格式
目前仅支持 JSON
。
ClientSelectorConfiguration
目前支持只有 select_all=true
。
batch_retrieval_timeout_seconds
此选项在请求日志时无效,因为在日志查询期间, 归档管理员必须等待生成日志的组件。
结果
结果以 vector<FormattedContent>
形式返回,其中包含每个条目的变体
与请求的格式匹配,但 JSON 是目前唯一支持的格式。
缓冲区内容
每个缓冲区都包含一个顶级数组,其中的所有元素都作为对象:
[
{
"metadata": { ... },
"payload": { ... }
},
{
"metadata": { ... },
"payload": { ... }
},
...
]
第二层嵌套可让档案管理员高效地打包日志消息,同时还能使用 使用同一个 API 来处理经过解析的 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
,具体取决于
消息被放置的位置
当生产组件溢出其日志套接字时,会递增用于 后续成功发送,以填充日志元数据中的一个字段。档案保管员进行了跟踪 元数据,但无法得知组件丢弃日志记录的信息,除非通过稍后的日志 来自该组件的记录。元数据会以相同的形式作为错误传递给客户端 字段。
如果邮件由于缓冲区限制而被存档员丢弃,则以合成 消息,以确保即使给定提供方未记录,客户端也会收到通知 。
旧版 API
Archivist 采用 fuchsia.logger.Log
协议,可让客户端读取文本中的日志
格式。此 API 已被 fuchsia.diagnostics.ArchiveAccessor
取代,并将在
。