web-dev-qa-db-fra.com

Journalisation des données sur le périphérique et récupération du journal

Sur une version de débogage dans Xcode, que j'utilise le simulateur ou un périphérique réel, les instructions NSLog, printf, fprintf assert et NSAssert apparaissent sur la console.

Si je lance maintenant une version de build sur le périphérique (disons que j'envoie une version de vol d'essai et que tout se passe bien sur mon iPhone; ce sera une version de version), lesquels (s'ils existent) sont enregistrés?

Et comment puis-je récupérer le journal?

NSLog génère-t-il réellement quelque chose lors de la compilation? Quel est le facteur déterminant? Que ce soit pour écrire sur stdout ou stderr? seul stderr est-il écrit dans le journal du périphérique? Est-ce que cela signifie que je dois utiliser fprintf? Est-ce que TOUT est écrit dans le journal de l'appareil? y a-t-il même une telle chose? Si oui, comment le récupérer?

Quelqu'un pourrait-il clarifier la situation? 

68
P i
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);

Ajoutez simplement ce bloc de code dans la méthode application:didFinishLaunchingWithOptions dans le fichier délégué de l'application pour créer un fichier journal dans le répertoire du document d'application sur iPhone qui consigne tous les événements de journal de la console. Vous devez importer ce fichier à partir d'iTunes pour voir tous les événements de la console.

Remarque: dans le fichier .plist, assurez-vous que Application supports iTunes file sharing existe et est défini sur YES afin de pouvoir y accéder via iTunes.

Pour obtenir des fichiers journaux: Lancez iTunes, une fois votre appareil connecté, sélectionnez Applications - sélectionnez votre document d'augmentation d'app-in pour obtenir votre fichier. Vous pouvez ensuite l'enregistrer sur votre disque

83
shyla

Dans Xcode 6.1.1, vous pouvez afficher la sortie de NSLog en procédant comme suit. Cependant, je ne suis pas sûr que cela vous permette de voir les journaux depuis trop longtemps. Je l'ai seulement vu remonter à quelques heures.

En tout cas, voici les étapes:

  1. Dans Xcode, allez à Window -> Devices.
  2. Sélectionnez votre appareil dans le panneau de gauche.
  3. Cliquez sur la petite flèche comme indiqué dans la capture d'écran ci-dessous.

enter image description here

134
Myxtic

Dans Swift 3.0, le code de Shyl deviendra,

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)

tous les autres processus sont les mêmes que ceux expliqués par Shyl

Ajoutez simplement ce bloc de code dans l’application: La méthode didFinishLaunchingWithOptions dans le fichier délégué de l’application. Un fichier journal sera créé dans le répertoire du document de l’application sur iPhone qui consigne tous les événements de journal de la console. Vous devez importer ce fichier à partir d'iTunes pour voir tous les événements de la console.

Remarque: Dans le fichier .plist, assurez-vous que Application supports iTunes file sharing existe et est défini sur YES afin de pouvoir accéder à via iTunes.

Pour obtenir des fichiers journaux: Lancez iTunes après la connexion de votre appareil sélectionnez Applications - sélectionnez votre document d'augmentation d'app-in, vous obtiendrez votre fichier. Vous pouvez ensuite l'enregistrer sur votre disque

18
Kiran P Nair

NSLog est écrit dans le journal des appareils de la version de production et vous pouvez le vérifier en connectant votre iPhone à votre système et en utilisant Organizer. Sélectionnez votre iPhone dans l'organiseur, cliquez sur Journaux de périphérique. Vous verriez toutes les sorties NSLog dans le journal.

11
Bora

J'ai trouvé ce lien d'Apple très instructif et complet… .. Il vous donne toutes les options pour voir ou accéder aux journaux du périphérique, qu'ils soient connectés ou non à votre machine de développement.

https://developer.Apple.com/library/ios/qa/qa1747/_index.html

7
GrandSteph

Oui, NSLog est affiché sur le périphérique. Vous pouvez voir ses sorties avec votre appareil connecté à votre Mac et à l'aide de l'outil Xcode Organizer.

2
Denis

Si vous utilisez le Kit de développement logiciel (SDK) Testflight, vous pouvez capturer tous les journaux à l’aide de leur fonction Enregistrement à distance .

2
pojo

Je pense que dans Xcode 9.3, l'écran du journal de périphérique a été déplacé vers un nouvel emplacement. Veuillez vous référer au lien suivant. 

Obtenir les journaux de périphérique lors de l'exécution dans Xcode

0
Vaibhav

Je sais que c'est un ancien fil de discussion, mais vous pouvez également avoir accès aux journaux des périphériques qui vont à:

Paramètres -> Confidentialité -> Analytique -> Données

J'espère que cette aide

Cordialement

0
ramonesteban78