协议
日志
在 fuchsia.logger/logger.fidl 中定义
LogListenerSafe 用于注册以监听日志的接口。
ListenSafe
通过批量调用 LogMany(),然后针对每条新日志消息调用 Log(),转储所有缓存的日志。
options 为 null 表示未请求过滤。
请求
| 名称 | 类型 |
|---|---|
log_listener |
client_end:LogListenerSafe
|
options |
LogFilterOptions?
|
LogListenerSafe
在 fuchsia.logger/logger.fidl 中定义
一个监听器,用于在收到每条消息时通知 Log。
完成
当此监听器传递给 DumpLogsSafe() 且所有缓存的日志均已发送时调用。
请求
<EMPTY>
日志
针对单条消息调用。
返回值用于流控制,实现者应确认收到每条消息,以便继续接收后续消息。
请求
| 名称 | 类型 |
|---|---|
log |
LogMessage
|
响应
<EMPTY>
LogMany
在提供缓存的日志时调用。
每次调用的日志大小上限为 MAX_LOG_MANY_SIZE_BYTES 字节。
返回值用于流控制,实现者应确认收到每个批次,以便继续接收后续消息。
请求
| 名称 | 类型 |
|---|---|
log |
vector<LogMessage>
|
响应
<EMPTY>
LogSink
在 fuchsia.logger/logger.fidl 中定义
排空程序的日志。
OnInit
每当 Archivist 接受新连接时,都会发送此事件。客户端可以使用返回的 IOBuffer 写入日志。
响应
| 名称 | 类型 |
|---|---|
payload |
LogSinkOnInitRequest
|
WaitForInterestChange
每当 LogSink 实现者的关注范围发生变化时,他们都会返回到此挂起获取。客户端应根据注册的 Interest 发出消息。如果传递了空兴趣,客户端应根据其默认设置(例如编译时间配置)发出消息。每个客户端一次只能轮询一次。 在第一次调用返回之前再次调用 WaitForInterestChange 将导致返回错误。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
payload |
LogSink_WaitForInterestChange_Result
|
STRUCTS
LogFilterOptions
在 fuchsia.logger/logger.fidl 中定义
| 字段 | 类型 | 说明 | 默认 |
|---|---|---|---|
filter_by_pid |
bool
|
无默认应用 | |
pid |
uint64
|
无默认应用 | |
filter_by_tid |
bool
|
无默认应用 | |
tid |
uint64
|
无默认应用 | |
verbosity |
uint8
|
如果大于零,系统会根据详细程度过滤日志,并忽略 |
无默认应用 |
min_severity |
LogLevelFilter
|
用作阈值以确定日志记录级别的严重程度。 |
无默认应用 |
tags |
vector<string:63>:16
|
如果非空,则返回包含至少一个指定标记的所有消息。如果为空,则不会按标记过滤消息。
传递的标记长度不应超过 |
无默认应用 |
LogMessage
在 fuchsia.logger/logger.fidl 中定义
| 字段 | 类型 | 说明 | 默认 |
|---|---|---|---|
pid |
uint64
|
无默认应用 | |
tid |
uint64
|
无默认应用 | |
time |
zx/InstantBoot
|
新增:25
|
无默认应用 |
severity |
int32
|
无默认应用 | |
dropped_logs |
uint32
|
请参阅 wire_format.h。由于消息可能会不按顺序传送,因此只有在数量超过上次计数时,才应记录此消息。 |
无默认应用 |
tags |
vector<string:63>:5
|
无默认应用 | |
msg |
string:32768
|
无默认应用 |
LogSink_WaitForInterestChange_Response
在 fuchsia.logger/logger.fidl 中定义
| 字段 | 类型 | 说明 | 默认 |
|---|---|---|---|
data |
fuchsia.diagnostics.types/Interest
|
无默认应用 |
枚举
InterestChangeError strict
类型:uint32
在 fuchsia.logger/logger.fidl 中定义
| 名称 | 值 | 说明 |
|---|---|---|
CALLED_TWICE |
1 |
在未等待第一次调用返回的情况下,错误地调用了 WaitForInterestChange 两次。 |
LogLevelFilter strict
类型:int8
在 fuchsia.logger/logger.fidl 中定义
与日志相关过滤功能搭配使用的日志级别。 过滤功能会根据最低严重级别阈值使用启发法,将严重级别等于或高于该阈值的所有日志包含在可打印日志中。
| 名称 | 值 | 说明 |
|---|---|---|
TRACE |
16 |
|
DEBUG |
32 |
|
INFO |
48 |
|
WARN |
64 |
|
ERROR |
80 |
|
FATAL |
96 |
|
无 |
127 |
TABLES
LogSinkOnInitRequest 资源
在 fuchsia.logger/logger.fidl 中定义
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
buffer |
handle<iob>
|
|
2 |
interest |
fuchsia.diagnostics.types/Interest
|
UNIONS
LogSink_WaitForInterestChange_Result strict
在 fuchsia.logger/logger.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
LogSink_WaitForInterestChange_Response
|
|
2 |
err |
InterestChangeError
|
常量
| 名称 | 值 | 类型 | 说明 |
|---|---|---|---|
| LOG_LEVEL_DEFAULT | 用于初始化日志记录器的默认日志级别。 |
||
| LOG_SEVERITY_MAX_STEP |
6
|
uint8 |
可用的最高日志严重级别。 |
| LOG_SEVERITY_STEP_SIZE |
16
|
uint8 |
离散日志严重级别之间的间隔 |
| LOG_VERBOSITY_STEP_SIZE |
1
|
uint8 |
离散日志详细程度之间的间隔 |
| MAX_DATAGRAM_LEN_BYTES |
32768
|
uint32 |
消息载荷的最大字节大小。 |
| MAX_LOG_MANY_SIZE_BYTES |
16384
|
uint64 |
每次调用监听器时记录的最大字节数。 |
| MAX_TAGS |
16
|
uint8 |
可传递给监听器以进行过滤的标记数量上限。 |
| MAX_TAGS_PER_LOG_MESSAGE |
5
|
uint8 |
将附加到 LogMessage 的标记数量上限。 |
| MAX_TAG_LEN_BYTES |
63
|
uint8 |
可传递给过滤器的最大标记长度(按监听器)。 |