web-dev-qa-db-fra.com

Est-il possible d'imprimer en couleur avec NSLog?

Dans un terminal couleur typique, il existe des séquences d'échappement que l'on peut utiliser pour imprimer du texte dans différentes couleurs. En règle générale, 8 couleurs sont disponibles. J'ai essayé d'utiliser les séquences d'échappement ANSI standard pour cela dans NSLog, mais pas de dés. Il ne prend pas en charge ce mécanisme.

Existe-t-il une autre façon d'imprimer sur la console (journal) en couleur à l'aide de NSLog?

Merci.

48
user945620

Vous pouvez utiliser Apple Color Emoji pour ajouter de la couleur à votre sortie de journal comme ceci:

if ([self isKindOfClass:[UITableViewController class]])
    NSLog(@"???? Table View controller Will appear: %@", NSStringFromClass([self class]));
else  if ([self isKindOfClass:[UINavigationController class]])
    NSLog(@"???? Navigation controller Will appear: %@", NSStringFromClass([self class]));
else
    NSLog(@"???? View controller Will appear: %@", NSStringFromClass([self class]));

Étant donné que le code ci-dessus peut s'afficher de manière incorrecte sur les plates-formes non OS-X, j'ai joint une capture d'écran de XCode, montrant le code et la sortie du journal:

Screenshot from X Code with Apple Color Emoji in code and log output

96
Lena Schimmel

Une ligne comme celle-ci fonctionne pour moi:

NSLog(@"\e[1;31mRed text here\e[m normal text here");

(Plus de couleurs disponibles ici )

Notez que vous devez réellement regarder votre sortie dans la console standard, car la console de débogage Xcode ne semble pas prendre en charge la coloration.

8
ayoy

Vous pouvez coloriser votre sortie NSLog en utilisant ce plugin Xcode: https://github.com/DeepIT/XcodeColors

J'ai écrit quelques lignes avec mes instructions d'installation rapide et simples macros personnalisées .

Mise à jour : J'utilise maintenant NSLogger avec prise en charge des couleurs. Beaucoup puissant.

6
djromero

L'approche d'Ayoy semble fonctionner en général dans une application basée sur la ligne de commande avec printf:

Cependant, je ne pense pas que cela fonctionne avec la console Xcode intégrée:

Ce:

NSLog(@"\e[1;31mRed text here\e[m normal text here");

... résulte en ceci:

6
Besi