10 题: 如何从iOS模拟器获取控制台日志?

在...创建的问题 Wed, Dec 31, 2014 12:00 AM

如果我没有在Xcode中测试应用程序,我想看看iOS模拟器中会发生什么。

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

我该怎么做?

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

    
215
  1. 2015-09-23 05:25:20Z
  2. 醇>
    10个答案                              10 跨度>                         

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


    旧方式:

    iOS模拟器将其日志直接打印到stdout,因此您可以看到与系统日志混淆的日志。

    打开终端并输入:tail -f /var/log/system.log

    然后运行模拟器。

    编辑:

    这已停止在Mavericks /Xcode 5上运行。现在您可以在自己的文件夹中访问模拟器日志:~/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

        
    251
    2017-01-04 23:36:36Z
    1. 这仍然准确吗?我没有在这些日志中使用console.logtail
      看到任何来自Console.app的内容
      2014-03-11 20:07:18Z
    2. iOS模拟器&gt;菜单栏&gt;调试&gt;打开系统日志
      2015-04-16 20:57:56Z
    3. 谢谢!这些天它的〜/Library /Logs /CoreSimulator /&lt; simulator-hash&gt; /system.log。
      2015-04-29 19:02:33Z
    4. 来自BYossarian的答案是“正确的”答案。 “在桌面游戏中开发菜单,让你看到iOS模拟器控制台:开发 - &gt; iPhone模拟器 - &gt;网站名称”
      2015-09-08 22:16:22Z
    5. 如果您不确定要使用的是什么<simulator-hash>(我当时),您也可以简单地执行:tail -f ~/Library/Logs/CoreSimulator/*/system.log这样可以渲染所有但只能继续拖尾的那个得到更新(很可能是正在运行的)
      2015-12-03 14:44:04Z
    6. 醇>

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

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

    开发 - &gt; iPhone模拟器 - &gt; 网站名称

        
    206
    2016-03-16 21:10:10Z
    1. 这是最好的答案,就像浏览器的“真正”控制台一样,你可以动态执行javascript命令。谢谢。
      2013-04-03 00:30:02Z
    2. 为什么我在其他任何地方都没有看到这个?辉煌。
      2013-11-12 11:22:04Z
    3. Web检查器(以这种方式访问​​)对我来说显示完全空白(Mavericks Macbook Pro - 安装了所有更新 - Safari 7.0.5)
      2014-07-11 18:01:16Z
    4. Safari似乎检测到simultor已打开,但它声明“No Inspectable applications”
      2014-10-08 11:15:16Z
    5. 当我打开我的模拟器时,有谁知道如何让它自动检查?
      2015-08-23 20:50:07Z
    6. 醇>

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

     
    Debug > Open System Log
    

    或使用

    keyboard shortcut: ⌘/

        
    102
    2016-10-10 20:56:41Z

    iOS 8和iOS 9

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

     
    ~/Library/Logs/CoreSimulator/<DEVICE_CODE>
    

    因此,以下内容将起作用:

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

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

     
    instruments -s devices
    
        
    90
    2015-06-15 23:19:25Z
    1. 呃,那么设备代码是什么?我有12个......
      2014-10-15 13:49:15Z
    2. 要查找设备标识符:在Xcode中,单击Windows&gt;设备。设备和标识符将显示在右侧窗格中。
      2014-11-10 13:45:33Z
    3. 您可以在控制台中键入instruments -s devices
      2015-02-03 19:11:25Z
    4. s /console /terminal window /
      2015-03-11 22:58:25Z
    5. 醇>

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

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

    现在事情正在转向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,你应该请参阅菜单中的模拟器。

    您可以通过从Safari地址栏拖动并在模拟器窗口中拖放来在模拟器中打开URL。您也可以使用xcrun simctl openurl booted <url>

        
    19
    2017-03-29 23:32:23Z
    1. 从Xcode 9.3,iOS 11开始,这是正确的答案。其他答案中提到的位置不再正确。
      2018-03-31 18:16:58Z
    2. 这适用于Xcode版本10.1(10B61),iOS 12.1模拟器。使用它在Emacs中查看iOS应用程序控制台输出。其他答案在过去有效,但不再有。
      2019-04-18 21:38:26Z
    3. 醇>

    如果您使用 Swift ,请记住println只会打印到调试日志(显示在xCode的调试区域中)。如果要打印到system.log,则必须像过去一样使用NSLog

    然后您可以通过其菜单Debug&gt;查看模拟器日志。打开系统日志...(cmd + /)

        
    16
    2015-01-20 12:48:30Z
    拖尾/var/log/system.log对我不起作用。我使用Console.app找到了我的日志。他们在

    ~/Library/Logs/iOS Simulator/{version}/system.log     
    11
    2016-03-16 11:57:31Z
    1. 这是回顾日志的好方法,例如:几天前。
      2013-11-26 02:30:02Z
    2. 醇>

    XCode&gt; 6.0和iOS&gt; 8.0 强> 如果你有XCode版本&gt;下面的脚本可以工作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中使用的模拟器类型作为参数传递。如上面的帖子所述,有simctl和instruments命令可以根据Xcode版本查看可供使用的模拟器类型。 查看可用设备/模拟器列表。

     
    xcrun instruments -s
    

    OR

     
    xcrun simctl list
    

    现在您可以将设备代码或模拟器类型作为参数传递给脚本,并将grep中的“iPhone 6(8.2模拟器)”替换为$1

        
    7
    2015-05-22 23:16:52Z

    您可以在Mac上使用Console应用程序。只需在“设备”下选择设备即可。

        
    4
    2019-04-01 08:54:15Z

    我可以通过iOS模拟器直接打开日志:Debug -> Open System Log...不确定何时引入,因此它可能不适用于早期版本。

        
    0
    2015-12-07 17:27:15Z
来源放置 这里