Як я можу отримати журнали консолі від iOS Simulator?


241

Я хочу побачити, що станеться в iOS Simulator, якщо я не тестую додаток у Xcode.

Наприклад, якщо я відкриваю посилання в тренажері Safari, дивіться, що відбувається в консолі, або якщо я встановлюю веб-додаток, дивіться посилання, які я натискаю в консолі.

Як я можу це зробити?

Я хочу бачити це в Xcode або Terminal, але це не проблема, якщо мені потрібно використовувати інший біт програмного забезпечення.


Відповіді:


271

iOS Simulator> Рядок меню> Налагодження> Відкрити системний журнал


Старі способи:

iOS Simulator друкує свої журнали безпосередньо до 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

EDIT 2:

Зараз вони розташовані в с ~/Library/Logs/CoreSimulator/<simulator-hash>/system.log

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


8
Це все ще точно? Я нічого не бачу з console.logцього журналу, використовуючи tailабоConsole.app
Jeff

3
Я не отримую жодних результатів ні на OSX 10.10. ці журнали є, але мій симулятор - версія 8.1, а всі журнали - версії 7.1 *
skift

65
iOS Simulator> Рядок меню> Налагодження> Відкрити системний журнал
pkamb

4
Дякую! Ці ~ / Бібліотека / Журнали / CoreSimulator / <simulator-hash> /system.log ці дні.
calimarkus

6
Відповідь BYossarian - "правильна". "Розробити меню в сафарі на робочому столі, яке дозволяє вам бачити консоль симулятора iOS: Розробка -> iPhone Simulator -> назва сайту"
snobojohan

224

Ви можете переглянути консоль для iOS Simulator через настільний Safari. Це схоже на те, як ви використовуєте настільний Safari для перегляду консолі для фізичних пристроїв iOS.

Кожен раз, коли тренажер працює, а веб-сторінка відкрита, в меню «Розвиток» на робочому сафарі з’явиться опція, яка дозволяє бачити консоль симулятора iOS:

Розробка -> iPhone Simulator -> назва сайту


31
Це найкраща відповідь, як і "справжня" консоль браузера, і ви можете виконувати команди JavaScript на льоту. Дякую.
Хорхе Фуентес Гонсалес

4
Чому я не бачив цього документально ніде більше? Блискуча.
Репка

4
Веб-інспектор (коли до нього звертаються таким чином) з'являється для мене абсолютно порожнім (Mavericks Macbook Pro - всі встановлені оновлення - Safari 7.0.5)
jamis0n

5
Сафарі, схоже, виявляє, що симулятор відкритий, але в ньому йдеться про "Не перевіряти програми"
nickmorss

4
про що ти говориш ... це просто відкриває веб-налагоджувач для веб-сайту, відкритого в будь-якому веб-перегляді симулятора. Повідомлення консолі, які ви бачите там, реєструються у контексті javascript. Це НЕ журнали симулятора ios. Я щось пропускаю? Можливо, яблуко щось змінило з 2013 року, але на сьогодні ця відповідь має смішно високу оцінку за назвою питання
Раду Сіміонеску

107

У Симуляторі є можливість відкрити console

Debug > Open System Log

або використовувати

keyboard shortcut: ⌘/

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


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

1
Щоб знайти ідентифікатор пристрою: у Xcode натисніть Windows> Devices. На правій панелі відображатиметься пристрій та ідентифікатор.
neilco

3
Можна ввести instruments -s devicesконсоль
viteinfinite

2
s / консоль / вікно терміналу /
mharper

Це не спрацювало для мене. xcrun simctl spawn booted log stream --level=debug | grep App_Debug_Stringпрацювали.
rustyMagnet

29

Не варто покладатися на них 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 Developer (включаючи консоль JS) з веб-сторінкою в Simulator : Запустіть один із тренажерів, відкрийте Safari, потім перейдіть до Safari на своєму mac, і ви побачите Simulator у меню.

Ви можете відкрити URL-адресу в Симуляторі, перетягнувши її з адресного рядка Safari і опустившись у вікно Симулятора. Ви також можете використовувати xcrun simctl openurl booted <url>.


Це правильна відповідь, що стосується Xcode 9.3, iOS 11. Місця, згадані в інших відповідях, більше не є правильними.
Майкл Макгуайер

Це працювало для мене на Xcode версії 10.1 (10B61), iOS 12.1 Simulator. Використовуючи його для перегляду результатів консолі додатків iOS в Emacs. Інші відповіді працювали в минулому, але вже не.
tboyce12

Для мене, що працювало, було замовлення (у мене було відкрито Safari перед тренажером, і тому в меню Safari не з’явилося введення меню)!
Шмаркус

Де ви знайшли документацію для прапора "предикат"?
Hjulle

Нове у симуляторах macOS 11 та iOS 14: log help predicatesнадасть більше інформації. Формат предиката слід за NSPredicate.
russbishop

18

Якщо ви використовуєте Swift , пам’ятайте, що він printlnбуде друкуватись лише в журналі налагодження (який з’являється в області налагодження xCode). Якщо ви хочете роздрукувати на system.log, вам доведеться використовувати, NSLogяк колись.

Потім ви можете переглянути журнал тренажера через його меню, налагодження> відкрити системний журнал ... (cmd + /)


12

хвости /var/log/system.logдля мене не спрацювали. Я знайшов свої журнали за допомогою Console.app. Вони були в

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


Це чудовий спосіб оглянути журнали, наприклад, дні тому.
Троя

10

Ви можете використовувати Consoleпрограму (виберіть свій пристрій у пристрої) на вашому Mac, щоб побачити повідомлення журналу, надіслані за допомогою NSLog(журнали з printфункції не побачите ).

введіть тут опис зображення

Зверніть увагу, що якщо ви хочете побачити журнал, WebViewвам слід скористатисяSafary -> Develop -> device

[Знайти журнал збоїв]


натисніть cmd then space bar Тип " Console" натисніть enter. Btw. це має бути правильною відповіддю сьогодні.
Самотня

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

Ви можете передати тип симулятора, який використовується в якості аргументу. Як згадувалося у вищезазначених публікаціях, є команда simctl та інструменти для перегляду типу тренажерів, доступних для використання залежно від версії Xcode. Щоб переглянути список доступних пристроїв / тренажерів.

xcrun instruments -s

АБО

xcrun simctl list

Тепер ви можете передати код пристрою АБО Simulator як аргумент до сценарію та замінити "iPhone 6 (8.2 Simulator)" усередині grep на $ 1


0

Я можу відкрити журнал безпосередньо через тренажер iOS: Debug -> Open System Log...Не впевнений, коли це було введено, тому він може бути недоступний для попередніх версій.


0

За допомогою програми Safari Technology Preview ви можете побачити вікно консолі Simulator, включаючи веб-інспектор Safari та всі інструменти веб-розробки. Відкрийте сторінку в Safari на Simulator, а потім перейдіть до попереднього перегляду технології Safari> Розробка> Симулятор.

Інструменти веб-розробки


0

Ні NSLogабо printвміст не буде записуватись до нього system.log, який можна відкрити Виберіть Simulator -> Debug -> Open System logна Xcode 11.

Я з'ясувати спосіб, журнали і записи в файл і відкрити xx.logз Terminal.app.then журнали будуть представлені в 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:

Замінити printабо NSLogз DDLogXXX.

КРОК 3:

$ tail -f {path of log}

Тут повідомлення буде представлено в Terminal.app жваво.

Ще одне. Якщо виходу з повідомлення немає, переконайтесь, що Environment Variables-> OS_ACTIVITY_MODEISNOT відключено.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.