统一日志记录:应用程序的信息/调试消息永远不会显示在Logarchive文件中

时间:2017-10-19 09:08:39

标签: ios xcode logging console unified-log

将应用程序部署到我的iOS设备,通过 sysdiagnose 触发日志收集,然后浏览从iTunes同步获取的system_logs.logarchive中的日志消息时,我的应用程序从未显示过Info / Debug日志消息类型。

请注意,此问题与现有但类似声音的问题不同,例如

我正在使用Paper Company(Swift)sample code from Apple来说明我的问题。我开始将应用程序部署到运行iOS 11.0.3的iOS设备上。该方案使用调试模式。就我而言:

  • 我总是在控制台中有“包含信息消息”和“包含调试消息”。
  • 当我的直播我的日志消息在我的应用程序运行时连接到Xcode时,我继续查看所有日志消息,包括控制台上的信息和调试类型
  • 当我通过 sysdiagnose 触发日志收集并通过Console读取logarchive文件时,我从未看到我应用的信息和调试消息即可。其他消息类型,默认,错误和故障,继续显示,就像我在直播时一样。
    • 但是,我仍然可以看到属于其他系统进程的信息和调试消息,但不是我的应用程序的进程。

Live Stream. Info / Debug are Shown Live Stream. Activity Tracing Working Logarchive. No Info / Debug for my App Logarchive. No Activity Tracing Logarchive. Info / Debug Shown for other Processes

由于这种令人费解的行为,我开始认为它可能与系统的配置有关。在Logging documentation

  

信息级消息最初存储在内存缓冲区中。如果没有配置更改,它们不会移动到数据存储,并在内存缓冲区填充时被清除。 然而,当出现故障和可选的错误时,它们会在数据存储中被捕获。当信息级消息添加到数据存储时,它们会一直存在,直到超出存储配额为止,点,最早的消息被清除。使用此级别来捕获可能有用的信息,但对于排除错误不是必需的。

在阅读之后,我还尝试将错误类型更改为故障类型,只是为了验证信息类型消息是否会显示。

os_log("B-b-b-b-b-b-b-bomb !", log: ViewController.ui_log, type: .fault)  // previously .error

但是,我仍然没有在logarchive文件中看到任何信息日志消息。

我的问题:

  • 我是否遗漏了一些我需要设置的内容,以使 sysdiagnose 的日志记录行为与我在实时流式传输时看到的控制台输出相匹配?请注意,Paper Company(Swift)已经使用ASSETCATALOG_COMPRESSION Build Settings,因为已经指出使os_log按预期工作很重要。请参阅Read logs using the new swift os_log api
  • 这是配置文件的问题吗?为了查看来自logarchive的信息/调试消息,我是否真的需要添加自定义配置文件,如Apple的日志文档和this mobleconfig example中所示?但是,考虑到即使使用Fault类型,Info消息仍然没有被记录,并且我仍然可以看到来自其他进程的Info / Debug消息,这似乎是可疑的。

1 个答案:

答案 0 :(得分:0)

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

enter image description here