工欲善其事必先利其器,好的开发者一定是懂得利用工具来提高自己的效率的,Xcode有很多第三方插件可以使用,最近发现一个可以给控制台着色的工具XcodeColors,结合CocoaLumberjack一起使用可以让控制台有选择的输出信息,可以把输出到控制台的信息分为多种类型,在不同场景下输出不同的信息

下面记录一下如何使用XcodeColors / CocoaLumberjack 和过程中遇到的问题

一、XcodeColors

  用于控制台着色的工具,地址在https://github.com/robbiehanson/XcodeColors,下载完直接安装运行工程 XcodeColors 即可,然后运行 TestXcodeColors 检查是否安装成功,如果在控制台打印出有颜色的文本,说明安装成功,如下图

  插件安装完成后可以在Xcode的插件目录下找到,目录如下

~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/XcodeColors.xcplugin

  自带的project只有一个mac工程,下面我们自己验证一下在iOS项目下是否也能正常使用,新建一个Target:TestiOSXCodeColors,依葫芦画瓢测试代码也写在Appdelegate.m文件里面

#import "AppDelegate.h"

#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 #define XCODE_COLORS_RESET_FG XCODE_COLORS_ESCAPE @"fg;" // Clear any foreground color
#define XCODE_COLORS_RESET_BG XCODE_COLORS_ESCAPE @"bg;" // Clear any background color
#define XCODE_COLORS_RESET XCODE_COLORS_ESCAPE @";" // Clear any foreground or background color #define LogBlue(frmt, ...) NSLog((XCODE_COLORS_ESCAPE @"fg0,0,255;" frmt XCODE_COLORS_RESET), ##__VA_ARGS__) @interface AppDelegate () @end @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{ NSLog(@"After building the XcodeColors plugin for the first time, you MUST RESTART XCODE.");
NSLog(@"If you still don't see colors below, please consult the README."); NSLog(XCODE_COLORS_ESCAPE @"fg0,0,255;" @"Blue text" XCODE_COLORS_RESET); NSLog(XCODE_COLORS_ESCAPE @"bg220,0,0;" @"Red background" XCODE_COLORS_RESET); NSLog(XCODE_COLORS_ESCAPE @"fg0,0,255;"
XCODE_COLORS_ESCAPE @"bg220,0,0;"
@"Blue text on red background"
XCODE_COLORS_RESET); NSLog(XCODE_COLORS_ESCAPE @"fg209,57,168;" @"You can supply your own RGB values!" XCODE_COLORS_RESET); LogBlue(@"Blue text via macro"); return YES;
} - (void)applicationWillResignActive:(UIApplication *)application {
// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
// Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
} - (void)applicationDidEnterBackground:(UIApplication *)application {
// Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
// If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
} - (void)applicationWillEnterForeground:(UIApplication *)application {
// Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
} - (void)applicationDidBecomeActive:(UIApplication *)application {
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
} - (void)applicationWillTerminate:(UIApplication *)application {
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
} @end

AppDelegate.m

  结果发现在iOS项目下颜色不但没有奏效,并且把其他部分的信息页打印出来了

  观察代码发现,不同地方在与

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

  尝试把 XCODE_COLORS_ESCAPE_IOS 也换成 XCODE_COLORS_ESCAPE_MAC 结果就可以正常显示

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

  不知道为何 XCODE_COLORS_ESCAPE_IOS 的值不能生效,如果要使用的就直接用MAC那个宏 

  还有一种更为简单的方法安装XcodeColors,通过 Alcatraz 包管理器,直接搜索安装

二、CocoaLumberjack

  CocoaLumberjack是Mac和iOS上一个集快捷、简单、强大和灵活于一身的日志框架,有点像java的log4j,CocoaLumberjack 对提供了很强大的输出日志的功能,不仅可以输出信息到控制台,还可以输出到苹果的日志系统,文件,关于CocoaLumberjack的详细使用,参见官网的说明

  下面我们看看控制台着色是否正常:

  1、新建一个工程

  2、通过 cocoapods 加入 CocoaLumberjack

  3、测试

    //添加控制台输出Logger
[DDLog addLogger:[DDTTYLogger sharedInstance] withLevel:DDLogLevelAll];
//允许着色
[[DDTTYLogger sharedInstance] setColorsEnabled:YES]; //输出信息
DDLogError(@"错误信息"); //红色
DDLogWarn(@"警告"); //橙色
DDLogInfo(@"提示信息"); //默认颜色
DDLogDebug(@"调试信息"); //默认颜色
DDLogVerbose(@"详细信息"); //默认颜色

  运行发现,控制台信息并没有着色

  一番搜索发现,需要配置Xcode环境 XcodeColors才会生效

添加环境变量 XcodeColors:YES

  重新运行,成功

  我们把输出等级设为 DDLogLevelWarning,只输出警告信息和错误信息

  CocoaLumberjack 还支持输出不同类型的信息,还支持配置输出到控制台的颜色,这样我们就可以只在控制台输出错误信息,只输出警告信息等,更多功能参见网站

  Demo:http://files.cnblogs.com/files/bomo/CocoaLumberjackTest.zip

【iOS】XcodeColors插件与CocoaLumberjack工具的更多相关文章

  1. IOS越狱插件汉化工具

    提取插件文件“*.plist"进行制作汉化文件plist文件路径查看方法:安装插件后在cydia中查看该插件页底部“文件系统内容”使用文件管理软件提取(filza;ifile.....) 如 ...

  2. fir.im Weekly - 17 个提升 iOS 开发效率的必备工具

    本期 fir.im Weekly 精选了一些iOS 开发工具和动画源码分享,希望每个开发者能专注效率.实用.灵感.  iOS开发工具--如何优化ipa包大小 @iOS程序犭袁 推荐了关于"如 ...

  3. iOS 程序插件及功能动态更新思路

    所用框架及语言 iOS客户端-Wax(开发愤怒的小鸟的连接Lua 和 Objc的框架),Lua,Objc, 服务端-Java(用于返回插件页面) 工具框架链接地址:Wax - https://gith ...

  4. Dynamic CRM 2013学习笔记(四)单据编号及插件批量注册工具

    基本上每个实体form上都会有单据编号,而且不同的实体编号要求还不太一样,这时就需要一个通用的单据编号插件,可配置以应对不同的需求. 下面简单介绍下实现步骤: 1. 创建二个实体,以保存各实体所要求的 ...

  5. iOS及时log日志查看工具 (iConsole)

    github下载地址:https://github.com/nicklockwood/iConsole 偶然看到的一个iOS及时log日志查看工具,通过该工具,我们可以在任何想看日志的时候,通过手势呼 ...

  6. Html - 仿Ios assistiveTouch 悬浮辅助球工具

    仿Ios assistiveTouch 悬浮辅助球工具 <!DOCTYPE html> <html> <head> <meta charset="u ...

  7. iOS常用插件

    iOS常用插件总结:http://blog.csdn.net/oik_ios/article/details/50251191http://www.jianshu.com/p/d24eea8b405a ...

  8. 20个可以帮你简化iOS app开发流程的工具

    这里推荐20个可以帮你简化iOS app开发流程的工具.很多开发者都使用过这些工具,涉及原型和设计.编程.测试以及最后的营销,基本上涵盖了整个开发过程. 原型和设计 有了一个很好的创意后,你要做的不是 ...

  9. IOS开发之网络开发工具

    IOS开发之网络开发工具 做移动端开发  常常会涉及到几个模块:1.网络检測   2.网络请求get和post请求  3.文件上传  4.文件下载   5.断点续传 如今将这些一一分享给大家 ,也欢迎 ...

随机推荐

  1. 启动Eclipse 弹出“Failed to load the JNI shared library”错误的解决方法

    原因1:eclipse的版本与jre或者jdk版本不一致 对策:要么两者都安装64位的,要么都安两个是32位一个是64位. 原因2:给定目录下jvm.dll不存在 对策:(1)重新安装jre或者jdk ...

  2. Android开发(二十五)——Android上传文件至七牛

    设置头像: Drawable drawable = new BitmapDrawable(dBitmap); //Drawable drawable = Drawable.createFromPath ...

  3. WPF总结

    WPF UI布局 模板总结控件可以通过ItemTemplate="{StaticResource Template}"绑定指定的模板: 数据源总结控件可以通过ItemsSource ...

  4. A cycle was detected in the build path of project

    解决Eclipse中Java工程间循环引用而报错的问题 如果我们的项目包含多个工程(project),而它们之间又是循环引用的关系,那么Eclipse在编译时会抛出如下一个错误信息: “A cycle ...

  5. Android软件安全开发实践(下)

    Android开发是当前最火的话题之一,但很少有人讨论这个领域的安全问题.本系列将分两期,探讨Android开发中常见的安全隐患和解决方案.第一期将从数据存储.网络通信.密码和认证策略这三个角度,带你 ...

  6. Linux下配置ip地址四种方法

    linux系统安装完,以后通过命令模式配置网卡IP.配置文件通常是/etc/sysconfig/network-scripts/ifcfg-interface-nameifconfig后显示的内容,l ...

  7. C#按需序列化对象为Json字符串

    只贴代码,不解释了.新的代理类型确实很给力! public static class JsonHelper { public static string ToJsonString<T>(I ...

  8. Amazon的Fire Phone之于Android开发者

    在上周Amazon也耐不住加入了手机竞争行列之中,发布了自己的Fire Phone,于是Android家族又多了一位变种成员,Android系统的碎片化程度也进一步加剧.因为工作的关系,我有幸在上个月 ...

  9. HTTP协议学习

    面试过程中又一个常见的问题,http协议,因为做服务器开发如果用http协议的话,现在各种开源软件都封装好了,python中只需要简单的继承定义好的类,重写get或者post等方法,几行代码就可以搭建 ...

  10. JAVA 汇编语言查看

    http://blog.csdn.net/bingduanlbd/article/details/8524300 http://hllvm.group.iteye.com/group/topic/34 ...