6
votes

Comment se débarrasser de la date et de l'heure qui apparaissent avant chaque instruction NSLOG dans la console

J'utilise NSLOG dans mon application. Et j'aimerais vous débarrasser du début gênant de chaque chaîne: "2009-07-01 21: 11: 06.508 myApp [1191: 207]".

Y a-t-il un moyen de le faire? Probablement une autre fonction de journalisation?

Merci.


0 commentaires

5 Réponses :


0
votes

Vous pouvez imprimer à SDTERR:

fprintf(stderr, "%s", "Your message");


3 commentaires

Cela nécessite (convertir à) une chaîne C et une chaîne de format avec% @ dans celle-ci ne fonctionnera pas. Ce n'est pas une mauvaise idée, mais l'utilisation directe n'est pas un remplaçant de rentabilité pour NSLog ().


True, vous devriez l'envelopper dans une fonction avec Varargs. J'en utilise un de karl kraft karlkraft.com/index.php/2009 / 03/33 / 114


J'aime l'interrupteur marche / arrêt de débogage dans son approche, mais il ne peut pas %% s'échappe (certes rare, mais problématique quand ils se produisent).



12
votes

Lire ceci:


2 commentaires

+1 Dang, j'étais sur le point de poster la même chose. Je a écrit cette page wiki ... ;-)


Et vous l'avez eu de la Quickies de Borkware, de sorte que tout s'ouvre. ;)



1
votes

J'aime pouvoir utiliser des objets de l'objectif-C pour les chaînes de format et les arguments, donc j'ai ré-écrit nslog () et l'a ajouté à mes utilitaires.

+ (void)myLog:(NSString *)formatString, ...
{
    va_list args;
    va_start(args, formatString);
    NSString* output = [[NSString alloc] initWithFormat:formatString arguments:args];
    fprintf(stderr, "%s\n", [output UTF8String]);
    [output release];
    va_end(args);
}


4 commentaires

Si vous lisez le lien Dave liée à, vous verriez que c'est ce que nous faisons, sauf que nous gérons également %% entités dans la chaîne de format.


Quinn, je n'ai pas vu ce post qu'après avoir posté ma réponse. Aussi, il y a quelque chose à dire pour avoir la réponse à l'avant et ne pas avoir à suivre un lien externe.


Pas de soucis. (Donc, vous vous direz généralement quand d'autres réponses ont été publiées, mais le chevauchement est tout à fait normal.) Vous avez raison, parfois, c'est bien d'avoir le code dans la réponse. Cependant, une fois qu'il passe une certaine taille, ou dans ce cas où la page Wiki est susceptible de changer (qu'elle a depuis la poste de Dave), il peut être préférable de lier.


Notez également qu'il s'agit d'une approche légèrement différente en créant une méthode de classe (qui est appelée sur cette classe) plutôt qu'une fonction C comme NSLog () pouvant être utilisée n'importe où. Cela dépend simplement de ce que l'Asseer préférerait et la portée de l'utilisation.



1
votes

Avez-vous essayé Cfshow () ?


2 commentaires

(Ajout de lien vers Docs) Je n'étais pas au courant de cette fonction, bon de savoir. Cependant, ce n'est pas un remplacement d'une chute, car vous devriez avoir une nstring * à lancer comme cfstringref. Néanmoins, on pourrait facilement définir une macro ou une masse pour envelopper cfshow () ...


Malheureusement, cfshow a un comportement très étrange dans Leopard qu'il enveloppe de manière erronée des lignes de manière illisible. Pour le léopard, c'est certainement préférable d'éviter que cfshow complètement.



2
votes

Cette macro de préprocesseur est facile à mettre en œuvre et vous n'avez pas à modifier l'un de vos instructions actuelles nslog nslog: xxx

Ça fonctionne complètement comme Nslog sans toutes les choses supplémentaires avant le message.

i original a trouvé cela sur une autre question, mais je ne peux pas le trouver maintenant.


0 commentaires