有啥方法可以用 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
的基于命令行的应用程序中普遍适用:
但是,我认为这不适用于内置 Xcode 控制台:
这个:
NSLog(@"\e[1;31mRed text here\e[m normal text here");
... 结果是这样的:
http://i.minus.com/j4hu1lr03eWsP.png【讨论】:
以上是关于有啥方法可以用 NSLog 进行彩色打印?的主要内容,如果未能解决你的问题,请参考以下文章