我如何从iOS模拟器获取控制台日志?

我想看看在iOS模拟器中发生了什么,如果我不在Xcode中testing应用程序。

例如,如果我在Safari模拟器中打开链接,请查看控制台中发生了什么,或者如果我安装了Web应用程序,请参阅我在控制台中按下的链接。

我该怎么做?

我想在Xcode或Terminal中看到它,但是如果我需要使用另一个软件,这不是问题。

iOS模拟器>菜单栏>debugging>打开系统日志


老方法:

iOS模拟器将其日志直接打印到标准输出,因此您可以看到与系统日志混合的日志。

打开terminal并键入: tail -f /var/log/system.log

然后运行模拟器。

编辑:

现在你可以在自己的文件夹中访问模拟器日志了: ~/Library/Logs/iOS Simulator/<sim-version>/system.log

您可以使用Console.app来查看这个,或者只是做一个尾巴(例如iOS 7.0.3 64位):

tail -f ~/Library/Logs/iOS\ Simulator/7.0.3-64/system.log

编辑2:

它们现在位于~/Library/Logs/CoreSimulator/<simulator-hash>/system.log

tail -f ~/Library/Logs/CoreSimulator/<simulator-hash>/system.log

您可以通过桌面Safari查看iOS模拟器的控制台。 这与您使用桌面Safari查看物理iOS设备的控制台的方式类似。

每当模拟器运行并打开一个网页时,桌面Safari中的“开发”菜单下会有一个选项,让您可以看到iOS模拟器控制台:

开发 – > iPhone模拟器 – > 网站名称

iOS 8和iOS 9

在iOS 8和iOS 9下,此位置现在是:

 ~/Library/Logs/CoreSimulator/<DEVICE_CODE> 

所以,以下将起作用:

 tail -f ~/Library/Logs/CoreSimulator/<DEVICE_CODE>/system.log 

DEVICE_CODE值可以通过以下控制台命令find:

 instruments -s devices 

模拟器中有一个选项可以打开console

 Debug > Open System Log 

或者使用

keyboard shortcut: ⌘/

模拟器菜单截图

如果您使用的是Swift ,请记住println只会打印到debugging日志(出现在xCode的debugging区域)。 如果你想打印到system.log,你必须像以前一样使用NSLog

然后你可以通过菜单Debug> Open System Log …(cmd + /)来查看模拟器日志。

尾巴/var/log/system.log没有为我工作。 我通过使用Console.appfind了我的日志。 他们在

~/Library/Logs/iOS Simulator/{version}/system.log

XCode> 6.0 AND iOS> 8.0如果您的XCode版本> 8.0,则以下脚本可用

我使用下面的小脚本将模拟器日志拖放到系统控制台上。

 #!/bin/sh sim_dir=`xcrun instruments -s | grep "iPhone 6 (8.2 Simulator)" | awk {'print $NF'} | tr -d '[]'` tail -f ~/Library/Logs/CoreSimulator/$sim_dir/system.log 

您可以传入Grep中使用的模拟器types作为参数。 正如在上面的post中提到的,有simctl和instruments命令来查看可用的模拟器types,这取决于Xcode版本。 查看可用设备/模拟器的列表。

 xcrun instruments -s 

要么

 xcrun simctl list 

现在,您可以将设备代码或模拟器types作为parameter passing给脚本,并将grep中的“iPhone 6(8.2 Simulator)”replace为$ 1

你不应该依赖instruments -s 。 从命令行使用模拟器的官方支持的工具是xcrun simctl

可以使用xcrun simctl getenv booted SIMULATOR_LOG_ROOTfind设备的日志目录。 即使位置发生变化,这也是正确的。

现在,事情正在向os_log ,在Mac主机上打开Console.app更为简单。 启动模拟器应该显示为左侧的日志源,就像物理设备一样。 您也可以在引导的模拟器中运行日志命令:

 # os_log equivalent of tail -f xcrun simctl spawn booted log stream --level=debug # filter log output xcrun simctl spawn booted log stream --predicate 'processImagePath endswith "myapp"' xcrun simctl spawn booted log stream --predicate 'eventMessage contains "error" and messageType == info' # a log dump that Console.app can open xcrun simctl spawn booted log collect # open location where log collect will write the dump cd `xcrun simctl getenv booted SIMULATOR_SHARED_RESOURCES_DIRECTORY` 

如果您想在模拟器中使用带有网页的Safari开发工具(包括JS控制台),请执行以下操作 :启动其中一个模拟器,打开Safari,然后在Mac上进入Safari,并在菜单中看到Simulator。

你可以在模拟器中打开一个URL,把它从Safari的地址栏拖放到Simulator窗口中。 你也可以使用xcrun simctl openurl booted <url>

我可以通过iOS模拟器直接打开日志: Debug -> Open System Log...不知道什么时候引入,所以它可能不适用于早期版本。