282

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

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

我怎样才能做到这一点?

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

4

15 回答 15

301

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


老办法:

iOS Simulator 将其日志直接打印到标准输出,因此您可以看到日志与系统日志混合在一起。

打开终端并输入: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

于 2012-04-15T20:12:01.470 回答
246

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

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

开发 -> iPhone 模拟器 ->站点名称

于 2013-01-19T15:14:20.530 回答
118

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

Debug > Open System Log

或使用

keyboard shortcut: ⌘/

模拟器菜单截图

于 2014-07-22T15:58:33.897 回答
93

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
于 2014-09-13T11:55:47.177 回答
39

你不应该依赖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,您应该会在菜单中看到模拟器。

您可以在模拟器中打开一个 URL,方法是将其从 Safari 地址栏中拖放到模拟器窗口中。您也可以使用xcrun simctl openurl booted <url>.

于 2017-01-27T05:28:33.477 回答
19

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

然后你可以通过它的菜单查看模拟器日志,Debug > Open System Log... (cmd + /)

于 2015-01-20T12:48:30.677 回答
19

[iOS 记录器]

您可以使用ConsoleMac 上的应用程序(在“设备”中选择您的设备)查看使用NSLog,发送os_log的日志消息Logger(您不会看到来自print函数的日志)。

另请检查(操作 -> 包含 <Info/Debug> 消息)

在此处输入图像描述

请注意,如果您想查看来自WebView(UIWebViewWKWebView) 的日志,您应该使用Safary -> Develop -> device

[查找崩溃日志]

于 2019-01-11T11:30:25.910 回答
12

拖尾/var/log/system.log对我不起作用。我通过使用找到了我的日志Console.app。他们在

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

于 2013-07-26T19:02:55.237 回答
7

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 中使用的模拟器类型作为参数传入。如上篇文章所述,根据 Xcode 版本,有 simctl 和 Instruments 命令可以查看可用的模拟器类型。查看可用设备/模拟器的列表。

xcrun instruments -s

或者

xcrun simctl list

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

于 2015-02-27T23:34:54.067 回答
2

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

在此处输入图像描述

于 2020-12-02T00:13:59.460 回答
1

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

网页开发工具

于 2020-02-28T06:17:19.180 回答
0

下载 Safari 技术评论。在模拟器运行的情况下,选择开发 > 模拟器 > localhost

于 2020-09-30T19:16:08.550 回答
0

NSLogprint内容将写入system.log,可以通过Simulator -> Debug -> Open System logXcode 11 上的 Select 打开。

我想了一个办法,将日志写入文件并xx.log用. 打开Terminal.app。然后日志将Terminal.app生动呈现。

我使用CocoaLumberjack实现了这一点。

步骤1:

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

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步:

替换print或。NSLog_DDLogXXX

第 3 步:

$ tail -f {path of log}

在这里,消息将生动地呈现在 Terminal.app 中。

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

于 2020-04-27T16:31:18.293 回答
0

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

于 2015-12-07T17:27:15.490 回答
0

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

ionic cordova run ios -l --consolelogs

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

于 2021-06-02T14:22:26.350 回答