Xcodeでアプリをテストしていない場合、iOSシミュレーターで何が起こるかを確認したいと思います。
たとえば、Safariシミュレーターでリンクを開いた場合、コンソールで何が起こるかを確認します。または、Webアプリをインストールした場合、コンソールで押しているリンクを確認します。
これどうやってするの?
XcodeまたはTerminalで表示したいのですが、別のソフトウェアを使用する必要がある場合は問題ありません。
Xcodeでアプリをテストしていない場合、iOSシミュレーターで何が起こるかを確認したいと思います。
たとえば、Safariシミュレーターでリンクを開いた場合、コンソールで何が起こるかを確認します。または、Webアプリをインストールした場合、コンソールで押しているリンクを確認します。
これどうやってするの?
XcodeまたはTerminalで表示したいのですが、別のソフトウェアを使用する必要がある場合は問題ありません。
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
デスクトップSafariを介してiOSシミュレータのコンソールを表示できます。これは、デスクトップSafariを使用して物理iOSデバイスのコンソールを表示する方法と似ています。
シミュレーターが実行されていて、Webページが開いているときはいつでも、デスクトップサファリの[開発]メニューの下に、iOSシミュレーターコンソールを表示するオプションがあります。
開発->iPhoneシミュレーター->サイト名
iOS8およびiOS9では、この場所は次のようになります。
~/Library/Logs/CoreSimulator/<DEVICE_CODE>
したがって、以下が機能します。
tail -f ~/Library/Logs/CoreSimulator/<DEVICE_CODE>/system.log
DEVICE_CODE
値は、次のターミナルコマンドで確認できます。
instruments -s devices
に頼るべきではありません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に移動すると、メニューにシミュレーターが表示されます。
URLをSafariアドレスバーからドラッグしてシミュレータウィンドウにドロップすると、シミュレータでURLを開くことができます。を使用することもできますxcrun simctl openurl booted <url>
。
Swiftを使用している場合はprintln
、デバッグログ(xCodeのデバッグ領域に表示されます)にのみ出力されることに注意してください。system.logに印刷する場合NSLog
は、昔と同じように使用する必要があります。
次に、メニューの[デバッグ]> [システムログを開く...](cmd + /)からシミュレータログを表示できます。
Console
Macでアプリケーション([デバイス]でデバイスを選択)を使用してNSLog
、、、os_log
を使用して送信されたログメッセージを表示Logger
できます(関数からのログは表示されませんprint
)。
また、([アクション]-> [<情報/デバッグ>メッセージを含める])も確認してください。
WebView
(UIWebView
またはWKWebView
)からのログを表示する場合は、を使用する必要があることに注意してください。Safary -> Develop -> device
テーリングは私に/var/log/system.log
はうまくいきませんでした。を使用してログを見つけましたConsole.app
。彼らは
~/Library/Logs/iOS Simulator/{version}/system.log
XCode>6.0およびiOS> 8.0XCodeバージョン>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内の「iPhone6(8.2シミュレータ)」を$1に置き換えることができます。
iOSシミュレーターを介してログを直接開くことができますDebug -> Open System Log...
。これがいつ導入されたかわからないため、以前のバージョンでは使用できない可能性があります。
いいえNSLog
、またはprint
コンテンツはに書き込みます。これは、Xcode11system.log
のSelectで開くことができます。Simulator -> Debug -> Open System log
xx.log
方法を見つけて、ログをファイルに書き込んで、で開きます。Terminal.app
そうすると、ログがTerminal.app
活発に表示されます。
私はCocoaLumberjackを使用してこれを達成します。
ログパスを追加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
}
print
またはNSLog
に置き換えDDLogXXX
ます。
$ tail -f {path of log}
ここでは、メッセージがTerminal.appに活発に表示されます。
もう1つ。メッセージのログアウトがない場合は、
Environment Variables
->OS_ACTIVITY_MODE
ISNOTが無効になっていないことを確認してください。
サファリテクノロジーレビューをダウンロードしてください。シミュレーターを実行した状態で、[開発]>[シミュレーター]>[ローカルホスト]を選択します
コンソールログを表示する最も簡単な方法はconsolelogs
、パラメータとして追加することです。
ionic cordova run ios -l --consolelogs
また、ターミナルでコンソールログを確認できます。