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


241

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

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

これどうやってするの?

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


次も参照してください:stackoverflow.com/a/29310542/59087
Dave Jarvis

回答:


270

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


7
これはまだ正確ですか?私はから何かを見ていないよconsole.log使用して、これらのログの中tailConsole.app
ジェフ

3
OSX 10.10でも結果が得られません。これらのログは存在しますが、シミュレータはバージョン8.1で、ログはすべてバージョン7.1 *です
スキフト

65
iOSシミュレーター>メニューバー>デバッグ>システムログを開く
pkamb

4
ありがとう!最近では〜/ Library / Logs / CoreSimulator / <simulator-hash> /system.logです。
calimarkus

6
BYossarianからの答えは「正しい」ものです。「iOSシミュレータコンソールを表示できるデスクトップサファリの開発メニュー:開発-> iPhoneシミュレータ->サイト名」
snobojohan

222

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

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

開発-> iPhoneシミュレータ-> サイト名


31
これが最良の答えです。ブラウザの「実際の」コンソールと同様に、JavaScriptコマンドをその場で実行できます。ありがとうございました。
ホルヘフエンテスゴンサレス

4
このドキュメントが他のどこにも記載されていないのはなぜですか?鮮やかさ。
カブ

4
Web検査(この方法でアクセスした場合)が完全に空白で表示される(Mavericks Macbook Pro-すべてのアップデートがインストールされている-Safari 7.0.5)
jamis0n

5
Safariはシミュレータが開いていることを検出しているようですが、「
検査

4
何を話しているのですか...これは、シミュレーターの任意のWebビューで開かれているWebサイトのWebデバッガーを開くだけです。そこに表示されるコンソールメッセージは、JavaScriptコンテキストに記録されます。これらはiOSシミュレータのログではありません。何か不足していますか?多分リンゴは2013年以来何かを変えました、しかし今日現在、この回答は質問のタイトルのために途方もなく高いスコアを持っています
Radu Simionescu


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で、[ウィンドウ]> [デバイス]をクリックします。右側のペインにデバイスと識別子が表示されます。
neilco 2014年

3
instruments -s devicesコンソールに入力できます
viteinfinite

2
s / console / terminal window /
mharper 2015年

28

に頼るべきではありません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をドラッグし、シミュレーターウィンドウにドロップすることで、シミュレーターでURLを開くことができます。も使用できますxcrun simctl openurl booted <url>


これは現在、Xcode 9.3、iOS 11の時点で正解です。他の解答で言及されている場所は、もはや正しくありません。
Michael McGuire

これは、Xcodeバージョン10.1(10B61)、iOS 12.1シミュレーターで動作しました。EmacsでiOSアプリコンソールの出力を表示するために使用します。他の回答は過去に機能しましたが、現在は機能していません。
tboyce12

私にとって、うまくいったのは注文でした(シミュレータの前にSafariを開いていたため、メニューエントリがSafariに表示されませんでした)。
Shmarkus

「述語」フラグのドキュメントはどこにありましたか?
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


これは、たとえば数日前のログを振り返るのに最適な方法です。
Troy

10

ConsoleMac のアプリケーション([デバイス]でデバイスを選択)を使用して、を使用して送信されたログメッセージを表示NSLogできます(print関数のログは表示されません)。

ここに画像の説明を入力してください

ログを表示したいWebView場合は、Safary -> Develop -> device

[クラッシュログを検索]


プレスcmd then space bar タイプ「Console」を押しますenter。ところで それが今日の正解です。
孤独な

7

XCode> 6.0および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シミュレータ)」を$ 1に置き換えることができます。


0

iOSシミュレーターを介して直接ログを開くことができます。Debug -> Open System Log...これがいつ導入されたのかわからないため、以前のバージョンでは使用できない場合があります。


0

Safari Technology Previewアプリを使用すると、Safari Web InspectorおよびすべてのWeb開発ツールを含むシミュレータコンソールウィンドウを表示できます。シミュレータのSafariでページを開き、Safariテクノロジープレビュー>開発>シミュレータに移動します。

Web開発ツール


0

いいえ、NSLogまたはprintコンテンツはに書き込みますsystem.log。これは、選択で開くことができますSimulator -> Debug -> Open System log Xcode 11ので。

方法xx.logTerminal.app見つけて、ログをファイルに書き込んでからを開きます。その後、ログは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を無効にしてください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.