2012-02-01 12 views
56

Su una build di debug in Xcode, indipendentemente dal fatto che sto usando il simulatore o un dispositivo reale, NSLog, printf, assert fprintf e le dichiarazioni NSAssert escono sulla consoleregistrazione dei dati sul dispositivo e recuperare il registro

Se Ora eseguo una build di rilascio sul dispositivo (ad esempio invio una build di volo di prova e ingrandisco sul mio iPhone, questa sarà una build di rilascio), quali di questi (se ce ne sono) vengono registrati?

E come posso recuperare il registro?

NSLog genera effettivamente qualcosa nella versione di rilascio? Qual è il fattore determinante? Se sta scrivendo su stdout o stderr? è scritto solo su stderr nel log del dispositivo? Questo significa che devo usare fprintf? QUALCUNO è scritto nel registro del dispositivo? Esiste davvero una cosa simile? Se sì, come raccoglierlo?

Qualcuno potrebbe chiarire la situazione?

+0

Per soli salvare le uscite come l'uso del file in questo modo: http://stackoverflow.com/questions/28114110/possible-to-write-swift-println-logs-into- file-troppo/4174077 7 # 41740777 –

risposta

66
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *fileName =[NSString stringWithFormat:@"%@.log",[NSDate date]]; 
NSString *logFilePath = [documentsDirectory stringByAppendingPathComponent:fileName]; 
freopen([logFilePath cStringUsingEncoding:NSASCIIStringEncoding],"a+",stderr); 

Basta aggiungere questo blocco di codice in application:didFinishLaunchingWithOptions metodo nel file app delegato e creerà un file di log nella directory documento applicazione su iPhone che registra tutti gli eventi del registro console. Devi importare questo file da iTunes per vedere tutti gli eventi della console.

Nota: nel file .plist, verificare che Application supports iTunes file sharing esista e sia impostato su YES in modo che sia possibile accedere tramite iTunes.

Per ottenere i file di registro: Avviare itunes, dopo che il dispositivo si è connesso selezionare App - selezionare l'app - in Documento di augment per ottenere il file. È quindi possibile salvarlo sul disco

+4

Incredibilmente semplice, grazie! –

+0

Come funziona? semplicemente avendo un file '.log' nella directory dei documenti, iOS scrive l'output della tua console lì? – Ali

+0

Questa è una risposta Myxtic troppo complessa e molto più semplice. I dipendenti Lazy Apple sabotano il progetto xcode sin dall'inizio. Forse tutti i progetti Apple? .. Oh shi ~ ... – Tertium

2

Sì, uscite NSLog sul dispositivo. Puoi vedere le uscite con il tuo dispositivo collegato al tuo Mac e usando lo strumento Xcode Organizer.

+0

È possibile per un utente ispezionare questi registri tramite iTunes? –

+3

Questa risposta http://stackoverflow.com/questions/2334664/can-i-get-console-logs-from-my-iphone-app-testers sta affermando che iPhone Configuration Utility è possibile esportare il log della console dal dispositivo Aggiornamento – Denis

11

NSLog viene scritto nel registro del dispositivo nella versione di produzione e può essere verificato collegando l'iPhone al sistema e utilizzando Organizer. Seleziona il tuo iPhone nell'organizzatore, fai clic su Registri dispositivo. Vedresti tutte le uscite NSLog nel registro.

+3

: In Xcode 6 non è più possibile leggere le uscite NSLog tramite i Registri dispositivo. Finestra> Organizzatore non elenca più i dispositivi. Invece Finestra> Dispositivi elenca i dispositivi, ma visualizza solo i registri degli arresti anomali. – Robert

+1

Robert, nella finestra> Schermo Dispositivi di Xcode 6 c'è una linea invisibile vicino al bordo inferiore dello schermo. Se lo tiri su, vedrai il log della console del tuo dispositivo selezionato. È invisibile a causa di un bug dell'interfaccia utente in Xcode, penso. – oradyvan

129

in Xcode 6.1.1, è possibile visualizzare l'output NSLog facendo quanto segue. Tuttavia, non sono sicuro che ti consenta di vedere i registri troppo indietro nel tempo. L'ho visto solo per un paio d'ore.

In ogni caso, qui sono i passi:

  1. In Xcode, andare a Window -> Dispositivi.
  2. Seleziona il tuo dispositivo nel pannello di sinistra.
  3. Fare clic sulla piccola freccia come mostrato nell'immagine seguente.

enter image description here

+4

Perché questa non è la risposta giusta! –

+2

Questa dovrebbe essere la risposta corretta ... Ho passato mezz'ora a cercare il pulsante di registro. Grazie per avermi salvato il mio tempo ... – PrimaryChicken

+1

solo NSLog. Non aspettarti cout o printf lì. – Kiran

12

a Swift 3.0, il codice di Shyl sarà modifiche,

var paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true) 
    let documentsDirectory = paths[0] 
    let fileName = "\(Date()).log" 
    let logFilePath = (documentsDirectory as NSString).appendingPathComponent(fileName) 
    freopen(logFilePath.cString(using: String.Encoding.ascii)!, "a+", stderr) 

tutti gli altri processi sono gli stessi che spiega con Shyl

Basta aggiungere questo blocco di codice nell'applicazione: didFinishLaunchingWithOptions metodo nel file delegato dell'app e creerà un file di registro nella directory del documento dell'app su iPhone che registra tutti i eventi del registro della console. Devi importare questo file da iTunes per vedere tutti gli eventi della console.

Nota: nel file .plist, verificare che Application supports iTunes file sharing esista e sia impostato su YES in modo che sia possibile accedere a tramite iTunes.

Per ottenere file di registro: Avvia iTunes, dopo che il tuo dispositivo è connesso seleziona App - seleziona la tua app - in Documento di Augment riceverai il tuo file . È quindi possibile salvare sul tuo disco

+0

correggimi se ho torto: questo ** modifica ** la directory dei log che significa che è stata originariamente scritta in '/ var/db/diagnostics /'. Vedi [qui] (https://stackoverflow.com/questions/45353818/how-can-i-open-view-logs/45356093?noredirect=1#comment77676493_45356093). – Honey

+0

@Honey, questo registro verrà salvato nella directory del documento dell'app. –

+0

Questo codice crea sempre un nuovo file all'avvio dell'app –

0

So che questo è un vecchio thread, ma si può anche avere accesso ai registri dei dispositivi di andare a:

Impostazioni -> Privacy -> Analytics -> Dati

Spero che questo aiuto

saluti

Problemi correlati