web-dev-qa-db-ja.com

iOSシミュレーターからコンソールログを取得するにはどうすればよいですか?

Xcodeでアプリをテストしていない場合、iOSシミュレーターで何が起こるかを見たいです。

たとえば、Safariシミュレーターでリンクを開いた場合、コンソールで何が起こるかを確認します。Webアプリをインストールした場合、コンソールで押しているリンクを確認します。

これどうやってするの?

XcodeまたはTerminalで表示したいのですが、別のソフトウェアを使用する必要がある場合は問題ありません。

214
user1335015

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

251
fbernardo

IOSシミュレーターのコンソールは、デスクトップSafariを介して表示できます。これは、デスクトップSafariを使用して物理iOSデバイスのコンソールを表示する方法に似ています。

シミュレーターが実行されていて、Webページが開いているときはいつでも、デスクトップサファリの[開発]メニューの下に、iOSシミュレーターコンソールを表示できるオプションがあります。

開発-> iPhone Simulator-> サイト名

206
Ben Jackson

シミュレータにはconsoleを開くオプションがあります

Debug > Open System Log

または使用する

keyboard shortcut: ⌘/

Simulator menu screenshot

102
Mark Bridges

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
90
viteinfinite

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`

シミュレータのWebページでSafari開発ツール(JSコンソールを含む)を使用する場合:シミュレータの1つを起動し、Safariを開き、MacのSafariに移動すると、シミュレータが表示されますメニュー。

Safariアドレスバーからドラッグしてシミュレータウィンドウにドロップすることで、シミュレータでURLを開くことができます。 xcrun simctl openurl booted <url>を使用することもできます。

19
russbishop

Swiftを使用している場合、printlnはデバッグログ(xCodeのデバッグ領域に表示される)にのみ出力されることに注意してください。 system.logに出力する場合は、昔と同じようにNSLogを使用する必要があります。

次に、メニューから[デバッグ]> [システムログを開く...](cmd + /)でシミュレータログを表示できます。

16
cprcrack

末尾の/var/log/system.logは機能しませんでした。 Console.appを使用してログを見つけました。彼らは

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

11
djibouti33

XCode> 6.0 AND iOS> 8. 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

OR

xcrun simctl list

これで、デバイスコードOR Simulatorタイプを引数としてスクリプトに渡し、grep内の「iPhone 6(8.2 Simulator)」を$ 1に置き換えることができます。

7
Gurubaran

MacでConsoleアプリケーションを使用できます。 [デバイス]でデバイスを選択します。

enter image description here

4
yoAlex5