查看日志

日志主要在与实时设备的交互(“在线”)环境中使用,或在 “离线”以及从设备过往执行中收集的日志。

订购

所有日志都附有时间戳,在记录 消息。LogSink 通过多种方式接收消息的顺序 用其时间戳表示

主要的 fuchsia.logger.Log 实现会对其通过 LogMany 发送的消息进行排序 fuchsia.logger.LogListenerSafe 上的方法。无论何时发送 将已收集的消息传递给新连接的监听器。但是,当邮件首次到达时, 无序的时间戳,任何活跃的监听器都将以任意顺序接收这些时间戳。工具 应显示对 fuchsia.logger/LogListenerSafe.Log 的连续调用累积的日志 当收到的消息没有按严格线性排序时,提醒用户。

在线

由于有两个缓冲区可存储日志,因此当您 实时设备。如需详细了解日志的存储位置,请参阅概念:存储

syslog 和内核日志

在开发期间,默认运行 ffx log 是为了查看所有日志。从本质上讲, 命令会运行 log_listener 程序,并输出系统中的每条消息 日志。其中包括从 klog 转发的内容。

log_listener 通过 fuchsia.logger.Log 接收日志, fuchsia.logger.LogListenerSafe 协议。

此外,syslog 的一些日志会输出到串行控制台。默认情况下,该文件包含 和 driver_manager 日志。

格式

默认情况下,log_listener 会发出以下格式的行:

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

默认情况下,时间戳来自单调时钟,采用微秒格式 。

如果显示“出了点问题”的消息由 my-component 在 process=1902 中写入了警告级别 且 thread=1904 为 278.14,默认输出为:

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

log_listener 具有 --hide_metadata--pretty 标志,用于减少输出的元数据。 和颜色代码日志行。使用这些标志,部分元数据会被隐藏 (PID、TID 等),而其他则会删减(时间戳、严重性)。

例如,如果消息“出了点问题”由 my-component 在 WARN 级别输出 time=278.14,则优质输出将如下所示:

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

在有可用正在运行的设备的情况下,运行 ffx log --help 以查看用于修改输出格式的选项。

fx test

在后台,fx test 会调用 run-test-suite,后者会收集隔离的 stdoutstderr 和 来自测试组件的 LogSink 个连接,内嵌输出并阻止显示输出 写入全局日志缓冲区

对于尚未组件的测试,不会执行任何日志拦截。

仅限内核日志

klog 会通过内核控制台输出并作为序列号进行。

它还由 netsvc 通过 UDP 转发,系统会在您运行 fx klog 时输出内容。正在运行 如果您的 SSH 会话失败,或在后台终端运行 fx klog,这可能是获取日志的好方法, 备份。ffx log

如果以上两种方法都不可行,您还可以直接在设备 shell 中使用 dlog 转储 以及内核调试日志

格式

内核日志的转储程序按以下格式发出行:

[timestamp] pid:tid> message

时间戳来自单调时钟。格式为 5 位数(前导零) 秒和三位数表示毫秒(尾随零)。

进程和线程 koid 各有 5 位数(前导零)。

如果显示“出了点问题”的消息写入进程 1902 和线程 1904,时间 278.14, 生成的输出将是:

[00278.140] 01902:01904> something happened

fx pretty_serial 命令可用于减少 klog 和颜色代码输出的元数据 日志行。使用此命令,系统会隐藏一些元数据(PID、TID、文件名等) 其他的则会被删减(时间戳、严重性)。

应从模拟器或其他来源通过管道输入串行输出:

ffx emu start --console | ffx debug symbolize

例如,如果消息“出了点问题”被输出到 klog 警告级别 my-component 的值设为 278.14,美观的输出将如下所示:

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

例如,如果消息“出了点问题”被未知组件输出到 klog, 在 time=278.14 时严重性未知,则 Pretty 输出将如下所示:

[278.14] something happened

线下:CQ/GI

运行测试时,Swarming 聊天机器人会调用 botanist,后者会收集多个输出流 呈现的内容stdout和“迁移任务”中呈现了 stderr 的植物学家 UI”消息。

对于单个测试可执行文件,植物学家会使用 testrunner lib 并单独收集该输出。 在测试失败后,可以看到此输出,其中包含名为 stdio 的链接。大多数 testrunner 通过 SSH 调用运行 run-test-suite,以连接到目标设备。这会收集 测试环境中的 stdout、stderr 和日志,并内嵌输出它们。

syslog.txt

Botanist 在目标设备上运行 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 运行。