将应用程序部署到我的 iOS 设备时,通过sysdiagnose触发日志收集,然后探索system_logs.logarchive
从 iTunes 同步获得的日志消息,我的应用程序从未显示 Info / Debug 日志消息类型。
请注意,这个问题不同于现有但类似的问题,例如
我正在使用Apple 的 Paper Company (Swift) 示例代码来说明我的问题。我开始将应用程序按原样部署到运行 iOS 11.0.3 的 iOS 设备上。该方案使用调试模式。就我而言:
- 我总是在控制台中打开“包含信息消息”和“包含调试消息”。
- 当我的应用程序与 Xcode 绑定运行时,当我实时流式传输我的日志消息时,我会继续在 Console 上看到所有日志消息,包括 Info 和 Debug 类型。
- 但是,当我通过sysdiagnose触发日志收集并使用控制台读取
logarchive
文件时,我从未看到我的应用程序的 Info 和 Debug 消息。其他消息类型(默认、错误和故障)继续显示,就像我直播时一样。- 但是,我仍然可以看到属于其他系统进程的 Info 和 Debug 消息,但不是我的应用程序的进程。
由于这种令人费解的行为,我开始认为这可能与系统配置有关。在记录文档中:
信息级消息最初存储在内存缓冲区中。如果不更改配置,它们不会移动到数据存储区,而是会在内存缓冲区填满时被清除。但是,当发生故障和(可选)错误时,它们会被捕获在数据存储中。将信息级消息添加到数据存储时,它们会一直保留在那里,直到超过存储配额,此时,最旧的消息将被清除。使用此级别来捕获可能对故障排除有用但不是必需的信息。
读完之后,我还尝试将错误类型更改为故障类型,只是为了验证是否会显示信息类型消息。
os_log("B-b-b-b-b-b-b-bomb !", log: ViewController.ui_log, type: .fault) // previously .error
但是,我仍然没有在logarchive
文件中看到任何 Info 日志消息。
我的问题:
- 我是否遗漏了一些我需要设置的东西,以使sysdiagnose的日志记录行为与我在直播时看到的控制台输出相匹配?请注意,Paper Company (Swift) 已经使用
ASSETCATALOG_COMPRESSION
构建设置,正如已指出的那样,os_log
按预期工作很重要。请参阅使用新的 swift os_log api 读取日志 - 这是配置文件的问题吗?为了查看来自的信息/调试消息
logarchive
,我是否真的需要添加一个自定义配置文件,如 Apple 的日志记录文档和这个 mobleconfig 示例中所示?然而,这似乎很可疑,因为即使使用 Fault 类型,Info 消息仍然没有被记录,而且我仍然可以看到来自其他进程的 Info / Debug 消息。