Как я могу получить консольные журналы с iOS Simulator?

Я хочу посмотреть, что происходит в iOS Simulator, если я не тестирую приложение в Xcode.

Например, если я открою ссылку в симуляторе Safari, посмотрите, что происходит в консоли, или если я устанавливаю веб-приложение, см. ссылки, которые я нажимаю на консоли.

Как я могу это сделать?

Я хочу увидеть его в Xcode или Terminal, но это не проблема, если мне нужно использовать другой бит программного обеспечения.

Ответ 1

iOS Simulator > Панель меню > Отладкa > Открыть системный журнал


Старые способы:

iOS Simulator выводит свои журналы непосредственно на stdout, поэтому вы можете просмотреть журналы, смешанные с системными журналами.

Откройте терминал и введите: tail -f /var/log/system.log

Затем запустите симулятор.

EDIT:

Это перестало работать с 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

Ответ 2

Вы можете просмотреть консоль для iOS Simulator через рабочий стол Safari. Это похоже на то, как вы используете настольный Safari для просмотра консоли для физических устройств iOS.

Всякий раз, когда симулятор работает, и там открывается веб-страница, в меню "Разработка" на рабочем столе сафари есть опция, позволяющая увидеть консоль симулятора iOS:

Разработка → iPhone Simulator → название сайта

Ответ 3

В Симуляторе есть возможность открыть console

Debug > Open System Log

или используйте

keyboard shortcut: ⌘/

Снимок экрана меню симулятора

Ответ 4

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

Ответ 5

Если вы используете Swift, помните, что println будет печататься только в журнале отладки (который появляется в области отладки xCode). Если вы хотите печатать в system.log, вы должны использовать NSLog, как в старые времена.

Затем вы можете просмотреть журнал симулятора через его меню, Debug > Open System Log... (cmd +/)

Ответ 6

Вы не должны полагаться на instruments -s. Официально поддерживаемый инструмент для работы с симуляторами из командной строки xcrun simctl.

Каталог журналов для устройства можно найти с помощью xcrun simctl getenv booted SIMULATOR_LOG_ROOT. Это всегда будет правильным, даже если местоположение изменится.

Теперь, когда все перемещается в os_log, легче открыть Console.app на хост-компьютере Mac. Загруженные симуляторы должны отображаться как источник журнала слева, как и физические устройства. Вы также можете запускать команды журнала в загрузочном симуляторе:

# 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, затем перейдите в Safari на свой Mac, и вы должны см. "Симулятор" в меню.

Вы можете открыть URL-адрес в Simulator, перетащив его из адресной строки Safari и опустив окно Simulator. Вы также можете использовать xcrun simctl openurl booted <url>.

Ответ 7

tailing /var/log/system.log не работал у меня. Я нашел свои журналы, используя Console.app. Они были в

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

Ответ 8

XCode > 6.0 и iOS > 8.0 Ниже script работает, если у вас версия XCode > 8.0

Я использую ниже маленький script, чтобы закрепить журналы симулятора на системной консоли.

#!/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

ИЛИ

xcrun simctl list

Теперь вы можете передать код устройства или тип симулятора в качестве аргумента для script и заменить "iPhone 6 (8.2 Simulator)" внутри grep равным $1

Ответ 9

Я могу открыть журнал непосредственно с помощью симулятора iOS: Debug -> Open System Log... Не уверен, когда это было введено, поэтому оно может быть недоступно для более ранних версий.

Ответ 10

Вы можете использовать системное Console приложение на своем Mac. Просто выберите интересное устройство в Устройствах.

enter image description here