在设备控制台查看os_log消息

26
我正在尝试通过Unified Logging (os_log) 从我的应用程序中获取一些日志记录。
这是日志的初始化过程:
var osLog : OSLog = OSLog(subsystem: "com.test.testapp", category: "native-tester")

这是我如何使用它:

os_log("iOS App initialized successfully!", log: osLog, type:.info)

在正常调试应用程序时,日志会正确地显示在控制台输出中,但是当我查看设备控制台时(显示在“设备和模拟器”窗口中),我根本看不到它们。

这篇文章说您应该使用以下方法配置系统以启用调试日志记录:

sudo log config --mode "level:debug" --subsystem com.test.testapp

但似乎这并没有产生影响。我猜想是因为我正在配置Mac来查看日志,而不是iPad。

如何从设备控制台中查看iPad/iPhone上的os_log日志?

6个回答

43

"设备和模拟器"窗口仅显示崩溃报告。使用控制台应用程序或终端,通过log --stream命令查看实时日志输出。

要通过控制台应用程序查看设备的实时日志消息,请从Xcode运行或直接从设备运行时执行以下操作:

  • 打开Console.app。
  • 在左侧面板中的“设备”下,单击设备名称。
  • 选择操作,然后从菜单中选择包含信息消息。如果您还使用.debug级别的消息,请确保选择包含调试消息。(如果没有选择这些项目,则控制台仅显示.default.fault.error级别的消息。)

如果仍然无法看到消息,请尝试输入此终端命令以配置应用程序的日志记录级别:

sudo log config --subsystem com.test.testapp --mode level:debug

这会为子系统“com.test.testapp”(包括.info.default消息)打开.debug-级别的日志记录。

如果您想要持久保存消息,而不是默认的仅在内存中保存,请同时为这三个级别打开持久性:

sudo log config --subsystem com.test.testapp --mode level:debug,persist:debug
无论日志设置如何,只有崩溃报告将出现在“设备和模拟器”窗口中。

1
即使在模拟器上运行并启用了调试日志,也有一种雷达无法在控制台应用程序中显示。这只会出现在真实设备上。https://forums.developer.apple.com/thread/82736 - Carmen

23

另一个陷阱:如果你在方案中设置了OS_ACTIVITY_MODEdisable,那么你将无法在控制台中看到应用程序的任何日志。

你需要移除或取消选中该参数。


有一个问题是如何禁用日志记录,其中在评论中提到了这个变量。 - Peter Lamberg
这就是困扰我的问题,为了使 Firebase 调试视图正常工作,它被禁用了,谢谢! - jakedunc

8
在控制台应用程序中,有两个选项来包含/隐藏调试和信息消息:

enter image description here


7

1
那么,如果内存不可访问,保存到内存的目的是什么?如果可以访问,如何访问? - Victor Engel

2
以下截图可供参考- 在此输入图片描述 在此输入图片描述

-3

发布应用程序到应用商店后,我的 os_log 日志记录消失了。我猜想在构建发布版本时,调试选项被关闭了。

要重新启用日志记录...请前往“Product(产品)”>“Scheme(方案)”>“Edit Scheme(编辑方案)”>“Run Debug(运行调试)”...然后勾选“Debug executable(调试可执行文件)”。


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