iOS设备统一日志快速收集与分析指南

本文详细介绍如何从iOS设备快速收集统一日志的方法,包括使用log命令的device-udid参数、设备配对要求、日志输出命名技巧,以及Apple Watch日志收集的特殊注意事项。

Apple统一日志分析[第12篇] - 从iOS设备快速简便地收集测试用统一日志

在macOS系统上收集统一日志相当简单。您可以使用命令,而且确实需要root权限:

1
sudo log collect

从iOS设备收集则不那么直观。我认为大多数人都在使用系统诊断/AirDrop方法,这种方法很棘手。尝试在iOS设备上触发系统诊断时,要按对按钮并掌握正确时机可能会令人沮丧(与尝试让设备进入DFU模式并非完全不同!)

在最近的测试中,我注意到log手册页面中的--device-udid参数。此功能似乎是在10.15版本中出现的。同时还出现了以下参数:

  • --device-name - 设备名称,例如:“Elwood的iPhone”
  • --device - “找到的第一个设备”。我想我会认为这是#YOLO选项。🤷🏻‍♀️

这个参数在最近的测试中非常方便,可以避免在iOS设备上进行系统诊断的挫败感。我喜欢使用UDID而不是名称,因此我将使用libimobiledevice中的idevice_id来快速获取它。

我有两个设备可供选择:一个通过Lightning线缆连接到我的Mac,另一个可通过本地网络使用。您可以使用任一选项来收集统一日志。

要使用这个新的log参数,iOS设备必须受信任并与Mac配对,否则您会遇到此错误。

以下是我用于快速iOS测试的示例。虽然我可以转储所有日志,但为了加快速度,我使用--last来控制要筛选的量(也可以使用--size实现)。我也不会使用默认的输出名称system_logs.logarchive,而是使用--output选项来适当命名它们。如果您反复进行多次测试,这很方便。而且,我甚至无法告诉您系统上有多少来自不同测试设备的随机system_logs.logarchive文件!)

1
sudo log collect --device-udid <UDID> --last 10m --output iphone_test1.logarchive

如果您打开了Console.app,您可能也会在这些设备中看到它们。

在Console.app中我们看到的一个设备是通过idevice_id没有看到的,那就是我的Apple Watch。您可以按照这些说明在配对的iPhone上加载系统诊断配置文件。我通过AirDrop将其发送到我的iPhone进行安装。

此配置文件可在三天内用于在Console.app中读取Apple Watch日志,之后您将需要重新加载它。

我觉得Apple Watch可以(应该?)通过使用--device-udid以相同方式收集,但是我收到"log: failed to create archive: Device not configured (6)“错误,有时还会得到部分且损坏的logarchive。如果有人对此有任何提示,请告诉我!

我希望这个参数能让我们少找借口来审查iOS设备上的统一日志,我们当然需要更多地了解存储在它们上面的内容,以及它们与macOS设备的相似或不同之处。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计