15

将应用程序部署到我的 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 消息。
4

1 回答 1

0

我有一个类似的问题,我认为我的日志没有发生(即使它们在连接到设备时实时显示良好),但这是因为我只查看过去 5 分钟的日志语句。尝试更改Showing:控制台中的设置,看看是否可以通过这种方式找到语句。

在此处输入图像描述

于 2019-01-29T21:37:41.537 回答