Messages gênants dans la console Xcode

DantekDantek Membre
22:50 modifié dans API AppKit #1
Alors, sous Xcode, je créé un project -> command line utility -> foundation tool..
le projet est créé.

Je commence à  programmer quelques trucs, et maintenant j'essaie l'équivalent de "printf" (qui vient du langage C) en objective-c, donc NSLog.

Voilà  le problème, quand j'utilise printf et que je regarde le résultat dans la console, ben ça m'affiche ça parfaitement.

Mais quand j'utilise NSLog, la console m'affiche la date juste avant, ce qui évidemment me gène.

Exemple :

NSLog(@ stone);

m'affichera :

2009-10-13 20:29:56.141 Objective-C_project[811:10b] stone

quand j'ai plusieurs strings d'affilée à  afficher, ça pose un problème..

Donc voilà , vous sauriez comment faire pour désactiver l'affichage de la date et du "Objective-C_project[811:10b] juste avant ?

Merci beaucoup

Réponses

  • 22:50 modifié #2
    Heu tu ne peux pas je pense.
    Mais y'a rien de gênant à  mon sens.. m'enfin bon tu peux toujours l'éviter en rajoutant \n devant
  • AliGatorAliGator Membre, Modérateur
    22:50 modifié #3
    La commande NSLog en fait n'est pas à  proprement parler le remplaçant de printf. C'est une commande qui permet d'écrire une chaà®ne de caractère " utilisant un format comme printf avec %d %f etc..., certes " dans la Console de MacOSX, pour faire du logging.
    Le but est donc d'afficher des messages, datés, dans la console, à  vocation de logging et de debug.

    Ceci dit si tu veux écrire sur stdout dans le terminal (et non faire du logging dans la console), rien ne t'empêche d'utiliser printf ;) Après-tout l'Objective-C est une surcouche du C :P Et tu peux demander la chaà®ne C à  une NSString (cStringUsingEncoding) pour la passer en paramètre
  • DantekDantek Membre
    22:50 modifié #4
    D'accord, merci pour ces réponses.

    Donc en gros, si je veux de l'affichage "clean" sur la console, je dois utiliser printf.

    Et récupérer ces "strings C" avec cStringUsingEncoding pour que ça colle avec des NSStrings au cas où j'en ai besoin
  • AliGatorAliGator Membre, Modérateur
    22:50 modifié #5
    Mais pourquoi veux-tu un affichage clean sur la console ?
    En général soit on log des messages d'infos à  fin de debugging (écrits dans les logs de /var/log, consultables par l'application Console.app, dite "la console", fichiers régulièrement gzippé par le système, avec un mécanisme d'autorotation des logs, permettant de monitorer les crash, etc...)...
    Soit on écrit des messages persos sur la sortie standard (stdout), dont le contenu est visible dans le terminal dans lequel tu exécutes ton application (Terminal.app)...
    Mais ce sont deux possibilités différentes en réalité ;)
  • yoannyoann Membre
    22:50 modifié #6
    dans 1255461310:

    Mais pourquoi veux-tu un affichage clean sur la console ?
    En général soit on log des messages d'infos à  fin de debugging (écrits dans les logs de /var/log, consultables par l'application Console.app, dite "la console", fichiers régulièrement gzippé par le système, avec un mécanisme d'autorotation des logs, permettant de monitorer les crash, etc...)...
    Soit on écrit des messages persos sur la sortie standard (stdout), dont le contenu est visible dans le terminal dans lequel tu exécutes ton application (Terminal.app)...
    Mais ce sont deux possibilités différentes en réalité ;)



    Belle explication :-)

    Au passage, petit rappel sur les flux d'E/S sur Unix : http://fr.wikipedia.org/wiki/Flux_standard

    Qui pourrait s'avérer nécessaire si tu ne connais pas ce domaine Dantek
  • DantekDantek Membre
    22:50 modifié #7
    Hmm ouaip c'était ça, je parlais en fait du terminal, xcode lance l'application Terminal.app et non la console. ^^
  • apocaalypsoapocaalypso Membre
    22:50 modifié #8
    Au pire, tu peux toujours agrandir la fenêtre  :)
Connectez-vous ou Inscrivez-vous pour répondre.