Bagaimana saya bisa mendapatkan log konsol dari iOS Simulator?


241

Saya ingin melihat apa yang terjadi di Simulator iOS jika saya tidak menguji aplikasi dalam Xcode.

Misalnya, jika saya membuka tautan di simulator Safari, lihat apa yang terjadi di konsol, atau jika saya memasang aplikasi web, lihat tautan yang saya tekan di konsol.

Bagaimana saya bisa melakukan ini?

Saya ingin melihatnya di Xcode atau Terminal, tetapi tidak masalah jika saya perlu menggunakan sedikit perangkat lunak.


Jawaban:


271

iOS Simulator> Menu Bar> Debug> Open System Log


Cara lama:

iOS Simulator mencetak lognya langsung ke stdout, sehingga Anda dapat melihat log bercampur dengan log sistem.

Buka Terminal dan ketik: tail -f /var/log/system.log

Kemudian jalankan simulator.

EDIT:

Ini berhenti bekerja pada Mavericks / Xcode 5. Sekarang Anda dapat mengakses log simulator di folder sendiri: ~/Library/Logs/iOS Simulator/<sim-version>/system.log

Anda dapat menggunakan Console.app untuk melihat ini, atau cukup lakukan saja (misalnya iOS 7.0.3 64 bit):

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

EDIT 2:

Mereka sekarang berada di ~/Library/Logs/CoreSimulator/<simulator-hash>/system.log

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


8
Apakah ini masih akurat? Saya tidak melihat apa pun dari console.logdalam log ini menggunakan tailatauConsole.app
Jeff

3
Saya tidak mendapatkan hasil apa pun di OSX 10.10. log-log itu ada di sana tetapi simulator saya adalah versi 8.1 dan log semuanya adalah versi 7.1 *
skift

65
iOS Simulator> Menu Bar> Debug> Open System Log
pkamb

4
Terima kasih! Its ~ / Library / Logs / CoreSimulator / <simulator-hash> /system.log hari ini.
calimarkus

6
Jawaban dari BYossarian adalah jawaban yang "benar". "Kembangkan menu di safari desktop yang memungkinkan Anda melihat konsol simulator iOS: Kembangkan -> iPhone Simulator -> nama situs"
snobojohan

224

Anda dapat melihat konsol untuk Simulator iOS melalui desktop Safari. Ini mirip dengan cara Anda menggunakan desktop Safari untuk melihat konsol untuk perangkat iOS fisik.

Setiap kali simulator berjalan dan ada halaman web terbuka, akan ada opsi di bawah menu Develop di desktop safari yang memungkinkan Anda melihat konsol simulator iOS:

Kembangkan -> iPhone Simulator -> nama situs


31
Ini adalah jawaban terbaik, seperti konsol "nyata" browser dan Anda dapat menjalankan perintah javascript dengan cepat. Terima kasih.
Jorge Fuentes González

4
Mengapa saya tidak melihat ini didokumentasikan di tempat lain? Cemerlang.
Turnip

4
Inspektur web (ketika diakses dengan cara ini) muncul sepenuhnya kosong untuk saya (Mavericks Macbook Pro - semua pembaruan diinstal - Safari 7.0.5)
jamis0n

5
Safari tampaknya mendeteksi bahwa simultor terbuka, tetapi menyatakan "Tidak ada aplikasi yang dapat diinspeksi"
nickmorss

4
apa yang Anda bicarakan ... ini hanya membuka debugger web untuk situs web yang dibuka dalam tampilan web apa pun dari simulator. Pesan konsol yang Anda lihat ada logon pada konteks javascript. Itu BUKAN log simulator ios. Apakah saya melewatkan sesuatu? Mungkin apel mengubah sesuatu sejak 2013, tetapi mulai hari ini jawaban ini memiliki skor sangat tinggi untuk judul pertanyaan
Radu Simionescu

107

Ada opsi di Simulator untuk membuka console

Debug > Open System Log

atau gunakan

keyboard shortcut: ⌘/

Tangkapan layar menu simulator


90

iOS 8 dan iOS 9

Di bawah iOS 8 dan iOS 9 lokasi ini sekarang:

~/Library/Logs/CoreSimulator/<DEVICE_CODE>

Jadi, yang berikut ini akan berfungsi:

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

The DEVICE_CODEnilai dapat ditemukan melalui perintah console berikut:

instruments -s devices

1
Untuk menemukan pengidentifikasi perangkat: di Xcode, klik Windows> Perangkat. Perangkat dan pengenal akan ditampilkan di panel kanan.
neilco

3
Anda dapat mengetik instruments -s devicesdi konsol
viteinfinite

2
s / console / terminal window /
mharper

Ini tidak berhasil untuk saya. xcrun simctl spawn booted log stream --level=debug | grep App_Debug_Stringbekerja.
rustyMagnet

29

Anda seharusnya tidak mengandalkan instruments -s. Alat yang didukung secara resmi untuk bekerja dengan Simulator dari baris perintah adalah xcrun simctl.

Direktori log untuk perangkat dapat ditemukan xcrun simctl getenv booted SIMULATOR_LOG_ROOT. Ini akan selalu benar bahkan jika lokasi berubah.

Sekarang hal-hal yang bergerak ke os_logitu lebih mudah untuk membuka Console.app di host Mac. Simulator yang di-boot harus muncul sebagai sumber log di sebelah kiri, sama seperti perangkat fisik. Anda juga dapat menjalankan perintah log di simulator yang di-boot:

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

Jika Anda ingin menggunakan alat Pengembang Safari (termasuk konsol JS) dengan halaman web di Simulator : Mulai salah satu simulator, buka Safari, lalu buka Safari di mac Anda dan Anda akan melihat Simulator di menu.

Anda dapat membuka URL di Simulator dengan menyeretnya dari bilah alamat Safari dan menjatuhkannya di jendela Simulator. Anda juga bisa menggunakan xcrun simctl openurl booted <url>.


Ini adalah jawaban yang benar sekarang pada Xcode 9.3, iOS 11. Lokasi yang disebutkan dalam jawaban lain tidak lagi benar.
Michael McGuire

Ini bekerja untuk saya di Xcode Versi 10.1 (10B61), iOS 12.1 Simulator. Menggunakannya untuk melihat output konsol aplikasi iOS di Emacs. Jawaban lain berhasil di masa lalu, tetapi tidak lagi.
tboyce12

Bagi saya, hal yang berhasil adalah pesanan (saya memiliki Safari terbuka sebelum Simulator dan entri menu tidak muncul di Safari)!
Shmarkus

Di mana Anda menemukan dokumentasi untuk bendera "predikat"?
Hjulle

Simulator baru untuk macOS 11 dan iOS 14: log help predicatesakan memberi Anda lebih banyak informasi. Format predikat mengikuti NSPredicate.
russbishop

18

Jika Anda menggunakan Swift , ingat bahwa printlnhanya akan mencetak ke log debug (yang muncul di area debug xCode). Jika Anda ingin mencetak ke system.log, Anda harus menggunakannya NSLogseperti dulu.

Kemudian Anda dapat melihat log simulator melalui menu, Debug> Open System Log ... (cmd + /)


12

tailing /var/log/system.logtidak bekerja untuk saya. Saya menemukan log saya dengan menggunakan Console.app. Mereka ada di

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


Ini adalah metode yang bagus untuk melihat kembali log dari, misalnya hari yang lalu.
Troy

10

Anda dapat menggunakan Consoleaplikasi (pilih perangkat Anda di Perangkat) di Mac Anda untuk melihat pesan log yang dikirim menggunakan NSLog(Anda tidak akan melihat log dari printfungsi).

masukkan deskripsi gambar di sini

Harap dicatat bahwa jika Anda ingin melihat log dari WebViewyang harus Anda gunakanSafary -> Develop -> device

[Temukan log kerusakan]


tekan cmd then space bar Ketik " Console" tekan enter. Btw. itu seharusnya jawaban yang benar hari ini.
Lonely

7

XCode> 6.0 AND iOS> 8.0 Script di bawah ini berfungsi jika Anda memiliki versi XCode> 8.0

Saya menggunakan Script kecil di bawah ini untuk ekor log simulator ke konsol sistem.

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

Anda bisa meneruskan jenis simulator yang digunakan dalam Grep sebagai argumen. Seperti disebutkan dalam posting di atas, ada perintah simctl dan instrumen untuk melihat jenis simulator yang tersedia untuk digunakan tergantung pada versi Xcode. Untuk Melihat daftar perangkat / simulator yang tersedia.

xcrun instruments -s

ATAU

xcrun simctl list

Sekarang Anda dapat mengirimkan kode Perangkat ATAU jenis Simulator sebagai argumen ke skrip dan mengganti "iPhone 6 (8.2 Simulator)" di dalam grep menjadi $ 1


0

Saya dapat membuka log secara langsung melalui simulator iOS: Debug -> Open System Log...Tidak yakin kapan ini diperkenalkan, jadi mungkin tidak tersedia untuk versi sebelumnya.


0

Anda dapat melihat jendela konsol Simulator, termasuk Safari Web Inspector dan semua Alat Pengembangan Web dengan menggunakan aplikasi Pratinjau Teknologi Safari. Buka halaman Anda di Safari pada Simulator dan kemudian pergi ke Safari Technology Preview> Develop> Simulator.

Alat Pengembangan Web


0

Tidak ada NSLogatau printkonten akan menulis system.log, yang dapat dibuka dengan Pilih Simulator -> Debug -> Open System logpada Xcode 11.

Saya mencari cara, menulis log ke dalam file dan membuka xx.logdengan. Terminal.appLalu log akan hadir dengan Terminal.apphidup.

Saya menggunakan CocoaLumberjack mencapai ini.

LANGKAH 1:

Tambahkan DDFileLogger DDOSLoggerdan cetak jalur log. config()harus dipanggil saat App makan siang.

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
}

LANGKAH 2:

Ganti printatau NSLogdengan DDLogXXX.

LANGKAH 3:

$ tail -f {path of log}

Di sini, pesan akan hadir di Terminal.app hidup.

Satu hal lagi. Jika tidak ada pesan keluar, pastikan Environment Variables-> OS_ACTIVITY_MODEISNOT nonaktifkan.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.