Come posso ottenere i registri della console dal simulatore iOS?


241

Voglio vedere cosa succede nel simulatore iOS se non sto testando l'app in Xcode.

Ad esempio, se apro un collegamento nel simulatore Safari, vedi cosa succede nella console o se installo un'app Web, vedi i collegamenti che sto premendo nella console.

Come posso fare questo?

Voglio vederlo in Xcode o Terminal, ma non è un problema se devo usare un altro bit di software.


Risposte:


271

Simulatore iOS> Barra dei menu> Debug> Apri registro di sistema


Vecchie vie:

iOS Simulator stampa i suoi log direttamente su stdout, quindi puoi vedere i log mescolati con i log di sistema.

Apri il Terminale e digita: tail -f /var/log/system.log

Quindi eseguire il simulatore.

MODIFICARE:

Questo ha smesso di funzionare su Mavericks / Xcode 5. Ora puoi accedere ai log del simulatore nella sua cartella: ~/Library/Logs/iOS Simulator/<sim-version>/system.log

Puoi usare Console.app per vedere questo, o semplicemente fare una coda (iOS 7.0.3 64 bit per esempio):

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

EDIT 2:

Ora si trovano in ~/Library/Logs/CoreSimulator/<simulator-hash>/system.log

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


8
È ancora preciso? Non vedo nulla da console.logquesti log usando tailoConsole.app
Jeff

3
Non sto ottenendo alcun risultato su OSX 10.10. quei registri ci sono ma il mio simulatore è la versione 8.1 e tutti i registri sono versioni 7.1 *
skift

65
Simulatore iOS> Barra dei menu> Debug> Apri registro di sistema
pkamb

4
Grazie! Oggi è ~ / Library / Logs / CoreSimulator / <simulator-hash> /system.log.
calimarkus,

6
La risposta di BYossarian è quella "corretta". "Menu Sviluppo in Safari desktop che ti consente di vedere la console del simulatore iOS: Sviluppo -> Simulatore iPhone -> nome sito"
snobojohan

224

È possibile visualizzare la console per il simulatore iOS tramite Safari desktop. È simile al modo in cui usi Safari desktop per visualizzare la console per dispositivi iOS fisici.

Ogni volta che il simulatore è in esecuzione e c'è una pagina Web aperta, ci sarà un'opzione nel menu Sviluppo in Safari desktop che ti consente di vedere la console del simulatore iOS:

Sviluppa -> iPhone Simulator -> nome del sito


31
Questa è la risposta migliore, così come la "vera" console del browser e puoi eseguire comandi javascript al volo. Grazie.
Jorge Fuentes González,

4
Perché non l'ho visto documentato altrove? Brillante.
Rapa,

4
L'ispettore web (quando vi si accede in questo modo) appare completamente vuoto per me (Mavericks Macbook Pro - tutti gli aggiornamenti installati - Safari 7.0.5)
jamis0n

5
Safari sembra rilevare che il simultaneo è aperto, ma afferma "Nessuna applicazione
ispezionabile

4
di cosa stai parlando ... questo apre solo il debugger web per un sito web aperto in qualsiasi webview del simulatore. I messaggi della console che vedi lì sono registrati nel contesto javascript. Quelli NON sono i registri del simulatore iOS. Mi sto perdendo qualcosa? Forse Apple ha cambiato qualcosa dal 2013, ma ad oggi questa risposta ha un punteggio ridicolmente alto per il titolo della domanda
Radu Simionescu,

107

C'è un'opzione nel Simulatore per aprire il console

Debug > Open System Log

o usa il

keyboard shortcut: ⌘/

Schermata del menu del simulatore


90

iOS 8 e iOS 9

Sotto iOS 8 e iOS 9 questa posizione è ora:

~/Library/Logs/CoreSimulator/<DEVICE_CODE>

Quindi, funzionerà quanto segue:

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

Il DEVICE_CODEvalore può essere trovato tramite il seguente comando console:

instruments -s devices

1
Per trovare l'identificatore del dispositivo: in Xcode, fai clic su Windows> Dispositivi. Un dispositivo e l'identificatore verranno visualizzati nel riquadro di destra.
Neilco,

3
È possibile digitare instruments -s devicesnella console
viteinfinite

2
s / console / finestra terminale /
mharper

Questo non ha funzionato per me. xcrun simctl spawn booted log stream --level=debug | grep App_Debug_Stringlavorato.
rustyMagnet,

29

Non dovresti fare affidamento instruments -s. Lo strumento ufficialmente supportato per lavorare con i simulatori dalla riga di comando è xcrun simctl.

La directory di registro per un dispositivo può essere trovata con xcrun simctl getenv booted SIMULATOR_LOG_ROOT. Questo sarà sempre corretto anche se la posizione cambia.

Ora che le cose si stanno spostando os_logè più facile aprire Console.app sul Mac host. I simulatori di avvio devono essere visualizzati come origine log a sinistra, proprio come i dispositivi fisici. È inoltre possibile eseguire i comandi di registro nel simulatore avviato:

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

Se vuoi usare gli strumenti Safari Developer (inclusa la console JS) con una pagina web nel Simulatore : avvia uno dei simulatori, apri Safari, quindi vai su Safari sul tuo Mac e dovresti vedere Simulatore nel menu.

È possibile aprire un URL nel simulatore trascinandolo dalla barra degli indirizzi di Safari e rilasciandolo nella finestra del simulatore. Puoi anche usare xcrun simctl openurl booted <url>.


Questa è la risposta corretta ora a partire da Xcode 9.3, iOS 11. Le posizioni menzionate in altre risposte non sono più corrette.
Michael McGuire,

Questo ha funzionato per me su Xcode versione 10.1 (10B61), iOS 12.1 Simulator. Usandolo per visualizzare l'output della console dell'app iOS in Emacs. Altre risposte hanno funzionato in passato, ma non più.
tboyce12,

Per me, la cosa che ha funzionato è stato l'ordine (avevo Safari aperto prima del Simulatore e quindi la voce di menu non era visualizzata in Safari)!
Shmarkus,

Dove hai trovato la documentazione per il flag "predicato"?
Hjulle

Novità per i simulatori macOS 11 e iOS 14: log help predicatesti darà maggiori informazioni. Il formato del predicato segue NSPredicate.
russbishop

18

Se stai usando Swift , ricorda che printlnverrà stampato solo nel registro di debug (che appare nell'area di debug di xCode). Se si desidera stampare su system.log, è necessario utilizzare NSLogcome ai vecchi tempi.

Quindi è possibile visualizzare il registro del simulatore tramite il menu, Debug> Apri registro di sistema ... (cmd + /)


12

la coda /var/log/system.lognon ha funzionato per me. Ho trovato i miei registri usando Console.app. Erano dentro

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


Questo è un ottimo metodo per guardare indietro ai registri, ad esempio giorni fa.
Troia,

10

Puoi usare l' Consoleapplicazione (seleziona il tuo dispositivo in Dispositivi) sul tuo Mac per vedere un messaggio di registro che è stato inviato usando NSLog(non vedrai i registri dalla printfunzione).

inserisci qui la descrizione dell'immagine

Si noti che se si desidera visualizzare un registro da WebViewutilizzareSafary -> Develop -> device

[Trova registro arresti anomali]


premere cmd then space bar " Console" premere enter. Btw. quella dovrebbe essere la risposta corretta oggi.
Solitario

7

XCode> 6.0 E iOS> 8.0 Lo script seguente funziona se hai la versione XCode> 8.0

Uso il seguente piccolo script per adattare i log del simulatore alla console di sistema.

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

Puoi passare il tipo di simulatore usato in Grep come argomento. Come menzionato nei post precedenti, ci sono comandi simctl e instruments per visualizzare il tipo di simulatori disponibili per l'uso a seconda della versione di Xcode. Per visualizzare l'elenco dei dispositivi / simulatori disponibili.

xcrun instruments -s

O

xcrun simctl list

Ora puoi passare il codice dispositivo o il tipo di simulatore come argomento allo script e sostituire "iPhone 6 (8.2 simulatore)" all'interno di grep per essere $ 1


0

Posso aprire il registro direttamente tramite il simulatore iOS: Debug -> Open System Log...non sono sicuro di quando è stato introdotto, quindi potrebbe non essere disponibile per le versioni precedenti.


0

Puoi visualizzare la finestra della console del simulatore, incluso Safari Web Inspector e tutti gli strumenti di sviluppo Web utilizzando l'app Safari Technology Preview. Apri la tua pagina in Safari sul simulatore e vai su Anteprima tecnologia Safari> Sviluppo> Simulatore.

Strumenti di sviluppo Web


0

No NSLogo il printcontenuto verrà scritto su system.log, che può essere aperto selezionando Seleziona Simulator -> Debug -> Open System logsu Xcode 11.

Trovo un modo, scrivo i log in un file e apro il xx.logcon. Terminal.appQuindi i log si presentano in modo Terminal.appvivace.

Uso CocoaLumberjack per raggiungere questo obiettivo.

PASSO 1:

Aggiungi DDFileLogger DDOSLoggere stampa il percorso dei registri. config()dovrebbe essere chiamato durante il pranzo dell'app.

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
}

PASSO 2:

Sostituisci printo NSLogcon DDLogXXX.

PASSAGGIO 3:

$ tail -f {path of log}

Qui, il messaggio presenterà in Terminal.app vivace.

Ancora una cosa. Se non vi è alcun messaggio di logout, assicurarsi Environment Variables-> OS_ACTIVITY_MODEISNOT disabilitato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.