Jak Mogę uzyskać logi konsoli z symulatora iOS?

Chcę zobaczyć, co się dzieje w symulatorze iOS, jeśli nie testuję aplikacji w Xcode.

Na przykład, jeśli otworzę link w symulatorze Safari, zobaczę co się stanie w konsoli, jeśli instaluję aplikację internetową, Zobacz łącza, które naciskam w konsoli.

Jak mogę to zrobić?

Chcę go zobaczyć w Xcode lub terminalu, ale to nie problem, jeśli muszę użyć innego kawałka oprogramowania.

Author: alexwlchan, 2012-04-16

9 answers

Symulator IOS > Pasek Menu > Debugowanie > Otwórz dziennik systemowy


Stare sposoby:

Symulator IOS drukuje dzienniki bezpośrednio na stdout, dzięki czemu można zobaczyć dzienniki pomieszane z dziennikami systemowymi.

Otwórz Terminal i wpisz: tail -f /var/log/system.log

Następnie uruchom symulator.

EDIT:

To przestało działać na Mavericks / Xcode 5. Teraz możesz uzyskać dostęp do logów symulatora w jego własnym folderze: ~/Library/Logs/iOS Simulator/<sim-version>/system.log

Możesz użyć konsoli.aplikacja, aby to zobaczyć, lub po prostu zrobić ogon (iOS 7.0.3 64 bity na przykład):

tail -f ~/Library/Logs/iOS\ Simulator/7.0.3-64/system.log

EDIT 2:

Znajdują się obecnie w ~/Library/Logs/CoreSimulator/<simulator-hash>/system.log

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

 242
Author: fbernardo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-04 23:36:36

Możesz wyświetlić konsolę symulatora iOS za pomocą desktopowego Safari. Jest to podobne do sposobu, w jaki używasz desktop Safari do wyświetlania konsoli na fizycznych urządzeniach z systemem iOS.

Gdy symulator jest uruchomiony i jest otwarta strona internetowa, w menu Rozwijaj w przeglądarce Safari na pulpicie pojawi się opcja, która pozwoli Ci zobaczyć konsolę symulatora iOS:

Develop - > iPhone Simulator - > Nazwa strony

 199
Author: BYossarian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-16 21:10:10

Jest opcja w symulatorze, aby otworzyć console

Debug > Open System Log

Lub użyć

keyboard shortcut: ⌘/

Zrzut ekranu menu symulatora

 96
Author: Mark Bridges,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-10 20:56:41

IOS 8 i iOS 9

Pod iOS 8 i iOS 9 ta lokalizacja jest teraz:

~/Library/Logs/CoreSimulator/<DEVICE_CODE>

Więc, następujące będą działać:

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

Wartość DEVICE_CODE można znaleźć za pomocą następującego polecenia konsoli:

instruments -s devices
 89
Author: viteinfinite,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-15 23:19:25

Jeśli używasz Swift , pamiętaj, że println będzie drukować tylko do dziennika debugowania (który pojawia się w obszarze debugowania xCode). Jeśli chcesz wydrukować do systemu.log, musisz użyć NSLog Jak za dawnych czasów.

Następnie możesz wyświetlić Dziennik symulatora za pomocą jego menu, Debug > Otwórz dziennik systemowy... (cmd +/)

 14
Author: cprcrack,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-20 12:48:30

Nie powinieneś polegać na instruments -s. Oficjalnie wspieranym narzędziem do pracy z symulatorami z linii poleceń jest xcrun simctl.

Katalog dziennika urządzenia można znaleźć za pomocą xcrun simctl getenv booted SIMULATOR_LOG_ROOT. To zawsze będzie poprawne, nawet jeśli Lokalizacja się zmieni.

Teraz, gdy rzeczy przenoszą się na os_log, łatwiej jest otworzyć konsolę.aplikacja na komputerze Mac. Uruchamiane symulatory powinny być wyświetlane jako źródło dziennika po lewej stronie, podobnie jak urządzenia fizyczne. Możesz także uruchomić polecenia dziennika w uruchomionym symulator:

# 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`

Jeśli chcesz używać narzędzi programistycznych Safari (w tym konsoli JS) ze stroną internetową w symulatorze : Uruchom jeden z symulatorów, otwórz Safari, a następnie przejdź do Safari na komputerze mac i powinieneś zobaczyć symulator w menu.

Możesz otworzyć adres URL w symulatorze, przeciągając go z paska adresu Safari i upuszczając w oknie symulatora. Możesz również użyć xcrun simctl openurl booted <url>.

 13
Author: russbishop,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-29 23:32:23

Śledzenie mnie nie zadziałało. Znalazłem moje logi używając Console.app. Byli w

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

 11
Author: djibouti33,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-16 11:57:31

XCode > 6.0 i iOS > 8.0 Poniższy skrypt działa, jeśli masz wersję XCode > 8.0

Używam poniższego małego skryptu do śledzenia logów symulatora na konsoli systemowej.

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

Jako argument można podać typ symulatora używany w Grepie. Jak wspomniano w powyższych postach, istnieją polecenia simctl i instruments, aby wyświetlić typ symulatorów dostępnych do użycia w zależności od wersji Xcode. Aby wyświetlić listę dostępnych urządzenia / symulatory.

xcrun instruments -s

Lub

xcrun simctl list

Teraz możesz przekazać kod urządzenia lub typ symulatora jako argument do skryptu i zastąpić" iPhone 6 (8.2 Simulator) " wewnątrz grepa na $1

 7
Author: Gurubaran,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-22 23:16:52

Mogę otworzyć dziennik bezpośrednio przez symulator iOS: Debug -> Open System Log... Nie wiem, kiedy to zostało wprowadzone, więc może nie być dostępne dla wcześniejszych wersji.

 0
Author: bompf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-07 17:27:15