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

时间:2012-04-15 20:09:44

标签: ios console ios-simulator

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

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

我该怎么做?

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

15 个答案:

答案 0 :(得分:250)

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

答案 1 :(得分:205)

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

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

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

答案 2 :(得分:102)

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

Debug > Open System Log

或使用

keyboard shortcut: ⌘/

Simulator menu screenshot

答案 3 :(得分:90)

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

答案 4 :(得分:18)

你不应该依赖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>

答案 5 :(得分:16)

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

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

答案 6 :(得分:11)

拖尾/var/log/system.log对我不起作用。我使用Console.app找到了我的日志。他们在中 ~/Library/Logs/iOS Simulator/{version}/system.log

答案 7 :(得分:7)

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

现在您可以将设备代码或模拟器类型作为参数传递给脚本并替换&#34; iPhone 6(8.2模拟器)&#34;在grep里面是$ 1

答案 8 :(得分:4)

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

enter image description here

答案 9 :(得分:1)

通过使用Safari Technology Preview应用程序,您可以看到Simulator控制台窗口,包括Safari Web Inspector和所有Web开发工具。 在模拟器上的Safari中打开您的页面,然后转到Safari技术预览>开发>模拟器。

Web Development Tools

答案 10 :(得分:0)

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

答案 11 :(得分:0)

NSLogprint的内容都不会写入system.log,可以通过在Xcode 11上选择Simulator -> Debug -> Open System log来打开它。

我想出了一种方法,将日志写入文件并用xx.log打开Terminal.app。然后日志将生动地显示在Terminal.app中。

我使用CocoaLumberjack实现了这一目标。

步骤1:

添加DDFileLogger DDOSLogger并打印日志路径。应用午餐时应调用config()

static func config() {
    #if DEBUG
    DDLog.add(DDOSLogger.sharedInstance) // Uses os_log
    let fileLogger: DDFileLogger = DDFileLogger() // File Logger
    fileLogger.rollingFrequency = 60 * 60 * 24 // 24 hours
    fileLogger.logFileManager.maximumNumberOfLogFiles = 7
    DDLog.add(fileLogger)
    DDLogInfo("DEBUG LOG PATH: " + (fileLogger.currentLogFileInfo?.filePath ?? ""))
    #endif
}

步骤2:

printNSLog替换为DDLogXXX

步骤3:

$ tail -f {path of log}

在这里,消息将生动地显示在Terminal.app中。

还有一件事。如果没有任何消息注销,请确保禁用Environment Variables-> OS_ACTIVITY_MODE ISNOT。

答案 12 :(得分:0)

下载野生动物园技术评论。在模拟器运行的情况下,选择开发>模拟器>本地主机

答案 13 :(得分:0)

在Xcode中: 查看->调试区域->激活控制台

enter image description here

答案 14 :(得分:0)

查看控制台日志的最简单方法是添加 consolelogs 作为参数:

ionic cordova run ios -l --consolelogs

您将能够在终端中看到控制台日志。