如何从iPad/iPhone检索使用os_log记录的消息?

10

我正在使用Swift中的新统一日志API。

因此,我创建了一个记录器并如下使用:

let testLogger = OSLog(subsystem: "my.subsystem", category: "test")
os_log("just a test: %@", log: testLogger, type: .error, "error")

如果iOS设备与Mac断开连接,我该如何检索已记录的消息?

我知道新的控制台应用程序会在设备连接到Mac时显示已记录的消息。但是,我想要检索在设备未连接到计算机时记录的消息。我该如何实现呢?

谢谢。


1
看起来它可以工作 - https://dev59.com/umox5IYBdhLWcg3wmFaV#13303081 - Oleg
1
这在使用os_log时不起作用,但是苹果可能会发布OSLogStore来实现这一点。他们在iOS 14测试版阶段几乎做到了,但在GM之前又将其删除了:http://doesoslogstoreworkyet.com/ - steipete
我们能在C++中使用它吗? - Devharsh Trivedi
3个回答

10
在iOS 11上,您现在可以捕获系统诊断并访问其进行电子邮件发送(不要发送此内容,它太大了),或将其导出到Dropbox / Airdrop以供Mac使用。说明。 操作步骤如下: 1. 按住音量上、音量下和电源按钮1.5秒直至屏幕震动。 2. 然后等待长达10分钟,在您的iOS 11设备上进入:设置 > 隐私 > 分析 > 分析数据 > sysdiagnose_[xxx] > 在导航栏中点击分享图标。对我来说只需要不到一分钟。 3. 搜索日志以查找 sysdiagnose,格式类似于 sysdiagnose_2018.12.13_14-16-19-0500_iPhone_OS_iPhone_15G77。 4. 然后通过AirDrop共享它。您不再需要一根线缆和iTunes。

你的意思是,与CocoaLumberjack不同,我无法通过电子邮件发送OSLog日志吗? - mfaani
@Honey,sysdiagnose日志的大小约为300 MB。大多数电子邮件客户端都无法发送这么大的文件。 - theoriginalbit
现在,你不需要按住1.5秒钟,只需要250毫秒。苹果表示:同时按下并释放音量按钮和侧面(或顶部)按钮250毫秒即可触发sysdiagnose。按住时间过长(> 1秒)会锁定设备。 - Almas Adilbek

3

我能找到的唯一方法是在iOS设备上触发sysdiagnose,然后将其连接到计算机并让其与iTunes同步,然后从文件系统中收集日志。

要在iOS设备上触发sysdiagnose,您需要同时按下音量增加、音量减少和电源按钮。然后等待它完成。苹果公司表示“需要10分钟”。然后连接到计算机并使用iTunes进行同步。

这些日志位于macOS上:

~/Library/Logs/CrashReporter/MobileDevice/[Your_Device_Name]/DiagnosticLogs/sysdiagnose

在Windows上,我不确定。
更多详细信息请参见Apple sysdiagnose指南

你的意思是,与CocoaLumberjack不同,我无法通过电子邮件发送OSLog日志吗? - mfaani
这个问题很大,所以你不能通过电子邮件发送,但是可以查看Daniel的答案 - Nicolai Henriksen
我正在尝试找到一种方法,让用户可以仅通过电子邮件发送os.log文件。sysdiagnose不是我想要的。请参考Nicoali的编辑历史记录。 - mfaani
@Honey,你找到其他方法了吗? - matt
@matt 不行。请看这个讨论。 - mfaani

1

原始答案来自这里

iOS14中的当前步骤如下:

设置 > 辅助功能 > 触控 >> 辅助触控 >> 单次轻按 >> 分析

最后,点击按钮。Sysdiagnose将会启动。

enter image description here

完成后,请禁用它,因为您不希望不断触发该sysdiagnose...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接