Konsol günlüklerini iOS Simulator'dan nasıl alabilirim?


241

Uygulamayı Xcode'da test etmiyorsam iOS Simulator'da ne olacağını görmek istiyorum.

Örneğin, Safari simülatöründe bir bağlantı açarsam, konsolda neler olduğunu görürsem veya bir web uygulaması yüklersem, konsolda bastığım bağlantılara bakın.

Bunu nasıl yapabilirim?

Xcode veya Terminal'de görmek istiyorum, ancak başka bir bit yazılım kullanmam gerekiyorsa sorun değil.


Yanıtlar:


271

iOS Simülatörü> Menü Çubuğu> Hata Ayıkla> Sistem Günlüğünü Aç


Eski yollar:

iOS Simulator günlüklerini doğrudan stdout'a yazdırır, böylece günlüklerin sistem günlükleriyle karıştırıldığını görebilirsiniz.

Terminali açın ve şunu yazın: tail -f /var/log/system.log

Ardından simülatörü çalıştırın.

DÜZENLE:

Bu, Mavericks / Xcode 5 üzerinde çalışmayı durdurdu. Artık simülatör günlüklerine kendi klasöründe erişebilirsiniz: ~/Library/Logs/iOS Simulator/<sim-version>/system.log

Bunu görmek için Console.app uygulamasını kullanabilir veya yalnızca bir kuyruk yapabilirsiniz (örneğin iOS 7.0.3 64 bit):

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

DÜZENLEME 2:

Şimdi yer alıyorlar ~/Library/Logs/CoreSimulator/<simulator-hash>/system.log

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


8
Bu hala doğru mu? console.logBu günlükte tailveyaConsole.app
Jeff

3
OSX 10.10'da da sonuç almıyorum. bu günlükler var ama benim simülatörüm 8.1 sürümü ve günlüklerin hepsi sürüm 7.1 *
skift

65
iOS Simulator> Menü Çubuğu> Hata Ayıkla> Açık Sistem Günlüğü
pkamb

4
Teşekkürler! ~ / Library / Logs / CoreSimulator / <simulator-hash> /system.log bu günlerde.
calimarkus

6
BYossarian'ın cevabı "doğru" cevaptır. "
İOS

224

İOS Simulator konsolunu masaüstü Safari üzerinden görüntüleyebilirsiniz. Fiziksel iOS cihazlar için konsolu görüntülemek için masaüstü Safari'yi kullanma yönteminize benzer.

Simülatör çalışırken ve açık bir web sayfası olduğunda, masaüstü safarisinde Geliştir menüsünün altında iOS simülatör konsolunu görmenizi sağlayan bir seçenek olacaktır:

Geliştir -> iPhone Simülatörü -> site adı


31
Bu, tarayıcının "gerçek" konsolu gibi en iyi yanıttır ve javascript komutlarını anında çalıştırabilirsiniz. Teşekkür ederim.
Jorge Fuentes González

4
Bunu neden başka bir yerde belgelediğimi görmedim? Parlak.
Şalgam

4
Web denetçisi (bu şekilde erişildiğinde) benim için tamamen boş görünüyor (Mavericks Macbook Pro - tüm güncellemeler yüklü - Safari 7.0.5)
jamis0n

5
Safari, simülatörün açık olduğunu tespit ediyor gibi görünüyor, ancak "
Denetlenebilir

4
neden bahsediyorsun ... bu simülatörün herhangi bir web görünümünde açılan bir web sitesi için web hata ayıklayıcısını açar. Orada gördüğünüz konsol mesajları javascript bağlamında günlüğe kaydedilir. Bunlar ios simülatörünün günlükleri DEĞİLDİR. Bir şey mi kaçırıyorum? Belki elma 2013'ten beri bir şey değiştirdi, ancak bugün bu sorunun soru başlığı için gülünç derecede yüksek bir puanı var
Radu Simionescu

107

Simülatörde ekranı açmak için bir seçenek var. console

Debug > Open System Log

veya

keyboard shortcut: ⌘/

Simülatör menüsü ekran görüntüsü


90

iOS 8 ve iOS 9

İOS 8 ve iOS 9 altında bu konum artık:

~/Library/Logs/CoreSimulator/<DEVICE_CODE>

Yani, aşağıdakiler işe yarayacaktır:

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

DEVICE_CODEDeğeri aşağıdaki konsol komutuyla bulunabilir:

instruments -s devices

1
Aygıt tanımlayıcısını bulmak için: Xcode'da Windows> Aygıtlar'ı tıklatın. Sağdaki bölmede bir cihaz ve tanımlayıcı görüntülenecektir.
neilco

3
Sen yazabilirsiniz instruments -s deviceskonsolu içinde
viteinfinite

2
s / console / terminal penceresi /
mharper

Bu benim için işe yaramadı. xcrun simctl spawn booted log stream --level=debug | grep App_Debug_Stringçalıştı.
rustyMagnet

29

Güvenmemelisin instruments -s. Komut satırından Simülatörlerle çalışmak için resmi olarak desteklenen araç xcrun simctl.

Bir cihazın günlük dizini ile bulunabilir xcrun simctl getenv booted SIMULATOR_LOG_ROOT. Konum değişse bile bu her zaman doğru olacaktır.

Artık işler os_logdeğiştiğine göre, Mac bilgisayarında Console.app dosyasını açmak daha kolay. Önyükleme simülatörleri, tıpkı fiziksel cihazlar gibi solda bir günlük kaynağı olarak görünmelidir. Günlük komutlarını önyüklemeli simülatörde de çalıştırabilirsiniz:

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

Safari Geliştirici araçlarını (JS konsolu dahil) Simülatördeki bir web sayfasıyla kullanmak istiyorsanız : Simülatörlerden birini başlatın, Safari'yi açın, ardından mac'inizdeki Safari'ye gidin ve menüde Simülatör'ü görmelisiniz.

Bir URL'yi Simülatör'de Safari adres çubuğundan sürükleyip Simülatör penceresine bırakarak açabilirsiniz. Ayrıca kullanabilirsiniz xcrun simctl openurl booted <url>.


Bu, Xcode 9.3, iOS 11'den itibaren doğru yanıttır. Diğer yanıtlarda belirtilen konumlar artık doğru değil.
Michael McGuire

Bu benim için Xcode Sürüm 10.1 (10B61), iOS 12.1 Simülatörü üzerinde çalıştı. Emacs'ta iOS uygulama konsolu çıktısını görüntülemek için kullanın. Diğer cevaplar geçmişte çalıştı, ama artık işe yaramadı.
tboyce12

Benim için çalıştı şey sipariş oldu (Ben Simülatör önce Safari açık vardı ve böylece menü girişi Safari görünmedi)!
Shmarkus

"Yüklem" bayrağının belgelerini nerede buldunuz?
Hjulle

MacOS 11 ve iOS 14 simülatörlerinde yeni: log help predicatessize daha fazla bilgi verecektir. Yüklem biçimi NSPredicate izler.
russbishop

18

Swift kullanıyorsanız , printlnbunun yalnızca hata ayıklama günlüğüne (xCode'un hata ayıklama alanında görünen) yazdırılacağını unutmayın. System.log dosyasına yazdırmak istiyorsanız NSLog, eski günlerdeki gibi kullanmanız gerekir .

Ardından simülatör günlüğünü, Hata Ayıkla> Sistem Günlüğünü Aç ... (cmd + /) menüsünden görüntüleyebilirsiniz


12

kuyruk /var/log/system.logbenim için işe yaramadı. Günlüklerimi kullanarak buldum Console.app. Onlarda dahildi

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


Bu, örneğin günler öncesindeki günlüklere bakmak için harika bir yöntemdir.
Troy

10

ConsoleKullanarak gönderilen bir günlük mesajını görmek için uygulamayı Mac'inizdeki (Aygıtlarda aygıtınızı seçin) kullanabilirsiniz ( işlevden NSLoggünlükleri göremezsiniz print).

resim açıklamasını buraya girin

Bir günlük görmek WebViewistiyorsanız şunu kullanmanız gerektiğini lütfen unutmayın:Safary -> Develop -> device

[Çökme günlüğünü bul]


basın cmd then space bar " Console" tuşuna basın enter. Btw. bugün doğru cevap bu olmalı.
Yalnız

7

XCode> 6.0 VE iOS> 8.0 XCode> 8.0 sürümüne sahipseniz aşağıdaki komut dosyası çalışır

Simülatör günlüklerini sistem konsoluna atmak için aşağıdaki küçük Script'i kullanıyorum.

#!/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'te kullanılan simülatör türünü argüman olarak iletebilirsiniz. Yukarıdaki yazılarda belirtildiği gibi, Xcode sürümüne bağlı olarak kullanılabilen simülatör türlerini görüntülemek için simctl ve Instruments komutu vardır. Kullanılabilir aygıtların / simülatörlerin listesini görüntülemek için.

xcrun instruments -s

VEYA

xcrun simctl list

Artık Aygıt kodunu VEYA Simülatör türünü komut dosyasına argüman olarak aktarabilir ve grep içindeki "iPhone 6 (8.2 Simulator)" yerine 1 $ olarak değiştirebilirsiniz.


0

Günlüğü doğrudan iOS simülatörü aracılığıyla açabilirim: Bunun Debug -> Open System Log...ne zaman tanıtıldığından emin değilim, bu nedenle önceki sürümler için mevcut olmayabilir.


0

Safari Teknoloji Önizleme uygulamasını kullanarak Safari Web Inspector ve tüm Web Geliştirme Araçları da dahil olmak üzere Simulator konsol penceresini görebilirsiniz. Sayfanızı Simülatör'de Safari'de açın ve ardından Safari Teknoloji Önizlemesi> Geliştir> Simülatör'e gidin.

Web Geliştirme Araçları


0

Xcode 11'de Select ile açılabilecek hiçbir içerik NSLogveya printiçerik yazılmayacaktır .system.logSimulator -> Debug -> Open System log

Bir yol buluyorum, günlükleri bir dosyaya yazıyorum ve xx.logile Terminal.appaçıyorum. Sonra günlükler Terminal.appcanlı olarak sunulacak .

Bunu başarmak için CocoaLumberjack kullanıyorum .

AŞAMA 1:

DDFileLogger DDOSLoggerGünlük yolu ekleme ve yazdırma. config()App öğle yemeği zaman çağrılmalıdır.

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
}

ADIM 2:

Değiştirin printveya NSLogile değiştirin DDLogXXX.

AŞAMA 3:

$ tail -f {path of log}

Burada, Terminal.app'de canlı olarak mesaj gösterilecek.

Bir şey daha var. Herhangi bir mesaj çıkışı yoksa, Environment Variables-> OS_ACTIVITY_MODEISNOT devre dışı bıraktığınızdan emin olun .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.