Любой способ печати в цвете с NSLog? - PullRequest
47 голосов
/ 25 января 2012

В типичном цветном терминале есть escape-последовательности, которые можно использовать для печати текста разными цветами. Обычно доступно 8 цветов. Я попытался использовать стандартную управляющую последовательность ANSI для этого в NSLog, но без игры в кости. Не поддерживается этим механизмом.

Есть ли другой способ печатать на консоль (журнал) в цвете с помощью NSLog?

Спасибо.

Ответы [ 4 ]

96 голосов
/ 04 декабря 2013

Вы можете использовать Apple Color Emoji , чтобы добавить какой-либо цвет к вашему выводу журнала следующим образом:

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]));

Поскольку приведенный выше код может неправильно отображаться в не-OS-X-платформ, я приложил скриншот XCode, показывая код и вывод журнала:

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

8 голосов
/ 25 января 2012

У меня работает такая строка:

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

(доступно больше цветов здесь )

Обратите внимание, что на самом деле вы должны просматривать свои выходные данные в обычной консоли, поскольку консоль отладки Xcode, похоже, не поддерживает раскраску.

6 голосов
/ 25 мая 2012

Вы можете раскрасить свой NSLog вывод, используя этот плагин Xcode: https://github.com/DeepIT/XcodeColors

Я написал несколько строк с своими инструкциями по быстрой установке и простыми пользовательскими макросами .

Обновление : я использую сейчас NSLogger с поддержкой цвета. Очень мощный.

6 голосов
/ 25 января 2012

Подход Ayoy, похоже, в целом работает в приложении на основе командной строки с printf:

Однако я не думаю, что этоработает со встроенной консолью Xcode:

This:

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

... приводит к такому:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...