【发布时间】:2018-03-31 06:49:11
【问题描述】:
将应用程序部署到我的 iOS 设备时,通过 sysdiagnose 触发日志收集,然后探索从 iTunes 同步获得的 system_logs.logarchive 中的日志消息,我的应用程序从未显示信息/调试日志消息类型。
请注意,这个问题不同于现有但类似的问题,例如
- How to set the log level on iOS 10?
- Xcode 8 - os_log_debug and os_log_info logs are not displayed on new Mac console (unified logging).
我正在使用 Paper Company (Swift) sample code from Apple 来说明我的问题。我开始将应用程序按原样部署到运行 iOS 11.0.3 的 iOS 设备上。该方案使用调试模式。就我而言:
- 我总是在控制台中打开“包含信息消息”和“包含调试消息”。
- 当我实时流式传输我的日志消息,而我的应用程序在运行时绑定到 Xcode,我会继续在控制台上看到所有日志消息,包括 Info 和 Debug 类型。。李>
- 但是,当我通过 sysdiagnose 触发日志收集并使用控制台读取
logarchive文件时,我从未看到我的应用程序的信息和调试消息强>。其他消息类型(默认、错误和故障)继续显示,就像我直播时一样。- 但是,我仍然可以看到属于其他系统进程的 Info 和 Debug 消息,但看不到我的应用进程。
由于这种令人费解的行为,我开始认为这可能与系统配置有关。在Logging documentation:
信息级消息最初存储在内存缓冲区中。如果不更改配置,它们不会移动到数据存储区,而是在内存缓冲区填满时被清除。 但是,当发生故障和错误时,它们会被捕获到数据存储中。 当信息级消息添加到数据存储时,它们会一直保留在那里,直到超过存储配额,此时点,最旧的消息被清除。使用此级别捕获可能对排除错误有用但并非必不可少的信息。
阅读后,我也尝试将错误类型更改为故障类型,只是为了验证是否会显示 Info 类型的消息。
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构建设置,正如已指出的那样,使os_log按预期工作很重要。见Read logs using the new swift os_log api - 这是配置文件的问题吗?为了查看来自
logarchive的信息/调试消息,我是否真的需要添加一个自定义配置文件,如 Apple 的 Logging 文档和this mobleconfig example 中所示?然而,这似乎很可疑,因为即使使用 Fault 类型,Info 消息仍然没有被记录,而且我仍然可以看到来自其他进程的 Info / Debug 消息。
【问题讨论】:
-
这个@HuaTham 有什么进展吗?我遇到了同样的问题。
-
我遇到了这个问题@jarrodparkes,它似乎是一个设备连接问题。我的电缆有点短,我意识到最后一个时间戳是几个小时前的。我不得不分离并重新连接(我的设备旁边有一个小闪电,然后在重新连接时消失了)。之后,新日志开始加载。之后,为类别和子模块应用过滤器。
标签: ios xcode logging console unified-log