有啥方法可以用 NSLog 进行彩色打印?

Posted

技术标签:

【中文标题】有啥方法可以用 NSLog 进行彩色打印?【英文标题】:Any way to print in color with NSLog?有什么方法可以用 NSLog 进行彩色打印? 【发布时间】:2012-02-18 19:37:10 【问题描述】:

在典型的彩色终端中,可以使用转义序列来打印不同颜色的文本。通常有 8 种颜色可供选择。我尝试在 NSLog 中为此使用标准的 ANSI 转义序列,但没有骰子。它不支持该机制。

有没有其他方法可以使用 NSLog 以颜色打印到控制台(日志)?

谢谢。

【问题讨论】:

在这个blog中引入CocoaLumberjack。 使用Xcode Logger Library。这是一个易于实现、色彩丰富、灵活、可定制且速度更快的 NSLog 替换。 【参考方案1】:

您可以使用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 的屏幕截图,显示代码和日志输出:

【讨论】:

太棒了!!,你节省了我的时间。这比使用彩色记录器非常简单且强大。谢谢(赞成) 在 Mavericks 上输入表情符号 - Command + Control + Space,在 Mountain Lion 上 - option + command + T 如果您编写自己的具有日志级别的日志记录类,则非常有用。喜欢有一个家伙检查我的警告日志的护照。 很有趣也很有用! 我尝试使用警告符号,但是在控制台打印时,它看起来不像 Apple Color Emoji 中的那个,而是⚠【参考方案2】:

这样的一行对我有用:

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

(更多颜色可选here)

请注意,您必须在常规控制台中实际观察您的输出,因为 Xcode 调试控制台似乎不支持着色。

【讨论】:

我要问的是这是否真的,Xcode 的调试控制台不提供颜色功能。到目前为止,答案似乎是肯定的。 哦,好吧,那我不知道,但似乎是这样。当然这不是NSLog 的问题,因为Xcode 的控制台也不会为printf() 着色... 我没有这样做 :) 我只是找到了二进制文件并在终端中运行它。它是 MacOS X 二进制文件。直到现在我才注意到这个问题的标签中出现了“ios”,很抱歉造成混淆......但这允许验证NSLog 为输出着色的能力。 您可以通过编辑您的方案 > 选项 > 使用终端来选择终端进行输出。 在 Swift 中,\e 导致构建时错误“Invalid escape sequence in literal【参考方案3】:

您可以使用此 Xcode 插件为您的 NSLog 输出着色:https://github.com/DeepIT/XcodeColors

我用my quick setup instructions and simple custom macros写了几行。

更新:我现在使用 NSLogger 支持颜色。非常强大。

【讨论】:

XCode 8 不支持插件。 :(【参考方案4】:

Ayoy 的方法似乎在带有printf 的基于命令行的应用程序中普遍适用:

http://i.minus.com/iT5kYgSscw9fy.png

但是,我认为这不适用于内置 Xcode 控制台:

这个:

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

... 结果是这样的:

http://i.minus.com/j4hu1lr03eWsP.png

【讨论】:

以上是关于有啥方法可以用 NSLog 进行彩色打印?的主要内容,如果未能解决你的问题,请参考以下文章

NSLog设置不打印

Xcode最好用的日志打印方法

Xcode最好用的日志打印方法

NSLog 可以打印的最大尺寸

NSLog不打印设置

Python终端输出打印彩色字体的方法