Colorful XCode Console

来源:互联网 发布:linux suspend 恢复 编辑:程序博客网 时间:2024/04/28 23:04

原文:http://www.taofengping.com/2013/06/05/cocoalumberjack_xcodecolors/#.UtdOi3l75q0


前几天在唐巧的微信公共账号(iosDevTips)里,收到一条关于如何在开发的时候,在控制台中更友好地输出Log的消息。里面大致提到了三个方案

  • 用Emoji放到每行行首,作为区分。(From 汤圣罡 tang sheng gang,第三个字我去查了:D)
  • 基于CocoaLumberjack的开源方案
  • AppCode,有插件可以设置Log着色(From 黎伟)

我只用过第二种,而且用起来也挺方便。关于什么是CocoaLumberjack,有什么优点,我这里就不再累述了,反正谁用谁知道,想了解的直接去Github上看吧。因为看到许多朋友说尝试后都失败了,这里说说我的设置步骤。

首先我的项目(ProjectA)是用Cocoapods管理的(当然你可以直接把CocoaLumberjack所有的文件拖到自己的项目里,如果你不觉得这么做很麻烦的话),所以在podfile里面添加pod 'CocoaLumberjack',然后pod update就可以了。

因为CocoaLumberjack的Color Log是依赖XcodeColor插件的,因此我们也必需安装这个插件。装完后重新启动一下Xcode,然后先试试XcodeColors的Demo Project,确定插件已经成功安装。

接下来在ProjectA里(可以是applicationDidFinishLaunchingWithOptions)设置一下日志的输出级别(可以按照级别输出,只输出警告,错误,或者全部),对lumberjack进行初始化,并且打开Color Log的开关

static const int ddLogLevel = LOG_LEVEL_VERBOSE;// Standard lumberjack initialization[DDLog addLogger:[DDTTYLogger sharedInstance]];// And we also enable colors[[DDTTYLogger sharedInstance] setColorsEnabled:YES];

这样的话你就可以用DDLogInfo,DDLogError等取代之前的NSLog了。默认的话DDLogError输出是红色的,DDLogWarn是黄色的(我喜欢这个颜色:D)。

到目前为止,对于我来说至少是在模拟器上调试的时候输出的Log都带颜色了,但后来我发现在真机上调试的时候输出的还是黑色的Log。后来在Wiki的XcodeColors in iOS上发现了这么一条

You may occasionally notice that colors don't work when you're debugging your app in the simulator. And you may also notice that you colors never work when debugging on the actual device. How do I fix it so it works everywhere, all the time?

我运气可能算比较好,每次在模拟器上调试的时候都正常有颜色输出。按照提示我对Project的Scheme作了如下调整:

  • In Xcode bring up the Scheme Editor (Product -> Edit Scheme...)
  • Select "Run" (on the left), and then the "Arguments" tab
  • Add a new Environment Variable named "XcodeColors", with a value of "YES"

最后重新Cmd+R一次,搞定,我在Xcode4.4和Xcode4.6上都做过测试,都是可以的。所以在我这里目前不存在Xcode版本不一致而造成彩色日志输出失败的问题。如果有朋友按照如上的步骤设置还是不成功,欢迎在评论里留言提出疑问,一起讨论。

最后附上真相


今天微博上有位叫开星儿的朋友提到了这篇文章,感兴趣的朋友可以翻过去看一下,你应该不会后悔。


因为XCode5下对插件安装多了一层验证,因此升级XCode5之后造成插件失灵的话,请移步这里


不出颜色的解决办法原文:http://www.tuicool.com/articles/NJNBze


前段时间,组里讨论更好的调试方式,其中提到希望很好区分不同的log,就是针对console中不同的Log语句加入特定的元素来区分。rcio提出在不同的Log中加入表情图片来区分,实验效果还可以。dezhi提到了 XcodeColors 这个插件,可以对Log语句标记不同的颜色。

我按照XcodeColors installation instructions教程安装了插件(即将XcodeColors.xcplugin放到 ~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/ 目录下,假如没有该目录则自己创建,别忘了重启Xxode),下载并运行了源码中提供的TestXcodeColors,一切正常!然后雄心勃勃想在我们自己的代码中使用,却发现没有效果,google了很多的方法都不行。最终终于找到了问题的所在:


#define XCODE_COLORS_ESCAPE_MAC @"\033["
#define XCODE_COLORS_ESCAPE_IOS @"\xC2\xA0["


#if TARGET_OS_IPHONE
#define XCODE_COLORS_ESCAPE XCODE_COLORS_ESCAPE_IOS
#else
#define XCODE_COLORS_ESCAPE XCODE_COLORS_ESCAPE_MAC
#endif

TestXcodeColors的Target是Mac OSX应用程序,所以没有问题;而我们的项目是iOS项目,宏定义为:#define XCODE_COLORS_ESCAPE XCODE_COLORS_ESCAPE_IOS,但实际上我们的console是在xcode上运行的,所以应该采用XCODE_COLORS_ESCAPE_MAC的前缀才能显示。

因此,将上段代码修改为:


#define XCODE_COLORS_ESCAPE_MAC @"\033["
#define XCODE_COLORS_ESCAPE_IOS @"\xC2\xA0["


#if 0
#define XCODE_COLORS_ESCAPE XCODE_COLORS_ESCAPE_IOS
#else
#define XCODE_COLORS_ESCAPE XCODE_COLORS_ESCAPE_MAC
#endif

然后将TestXcodeColors中示例的NSLog代码拷贝到iOS测试项目中,Bingo:

测试 XcodeColors 插件可用

测试 XcodeColors 插件可用

上图项目是使用Xcode 5 预览版创建编译运行的,所以使用Xcode 4的方法设置 XcodeColors 插件在Xcode 5上也是可用的。

指引上说XcodeColors可以通过以下方式获取插件是否安装成功并且可以用: 

char *xcode_colors = getenv(XCODE_COLORS);
if (xcode_colors && (strcmp(xcode_colors, "YES") == 0))
{
// XcodeColors is installed and enabled!
}

实测发现只对Mac OSX应用有效,而iOS应用是无法检测成功的,猜测又是跟TARGET_OS_IPHONE相关。该问题会继续跟进,希望懂的朋友可以不吝指点。 


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 宝宝经常不拉大便怎么办 宝宝便秘 肛裂了怎么办 3个月宝宝不便便怎么办 宝宝8个月不便便怎么办 宝宝在幼儿园不爱说话怎么办 广东学考考了d怎么办 上嘴唇干燥紧绷怎么办 美国大学gpa非常低怎么办 大学手机作弊通报教务处怎么办 崩坏3邮箱验证码过期怎么办 快递员被顾客恶意投诉怎么办 5岁幼儿逻辑思维差怎么办 脸一边胖一边瘦怎么办 夏天穿鞋子脚痒怎么办 脚痒怎么办但不是脚气 脚气脚趾缝烂了怎么办 凉鞋穿久了臭怎么办 运动鞋穿久了臭怎么办 体恤穿久了发臭怎么办 十七八岁青少年逆反心理怎么办 挨刚煮好的粥烫伤改怎么办? 5e的demo有水印怎么办 宝宝湿疹激素一停药复发怎么办 木工家装没事做怎么办 取票之后票丢了怎么办 补牙咬合低了点怎么办 留学生上美国网课上不了网怎么办 大四绩点不够2.0怎么办 ucas申请成绩下来后怎么办 在本校读研毕业东西怎么办 美国硕士gpa低于3.0怎么办 英国t4签证拒签怎么办 abc洗液过敏了怎么办 护士电子化注册忘记用户名怎么办 手机重力感应坏了怎么办 电脑所有驱动都删除了怎么办 毕业生没有签工作档案怎么办 澳洲两年工作签怎么办 上班一年没签劳动合同怎么办 公司拖欠工资怎么办没签劳动合同 brp丢了怎么办回国补