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.

pengguna1335015
sumber
Lihat juga: stackoverflow.com/a/29310542/59087
Dave Jarvis

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

fbernardo
sumber
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

Ben Jackson
sumber
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

Mark Bridges
sumber
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
tidak terbatas
sumber
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>.

russbishop
sumber
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 + /)

cprcrack
sumber
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

djibouti33
sumber
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]

yoAlex5
sumber
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

Gurubaran
sumber
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.

Bompf
sumber
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

Mau
sumber
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.

Jules
sumber