使用CocoaLumberjack给输出Log分级

2016-03-20  本文已影响0人  hj的简书

如果做过android的同学可以知道,android studio的console输出的log可以拥有不同的颜色样式,这样可以方便程序员进行选择性的观看、调试。但是这么炫的功能Xcode可以做到吗?答案是YES。
好,废话不多说,下面就开始介绍怎么操作

1.使用CocoaPods导入CocoaLumberjack

1.创建一个新的工程
2.这里可以通过命令行创建文件的方式或者通过Xcode插件CocoaPods创建Podfile
3.打开Podfile文件,并添加pod 'CocoaLumberjack'
4.执行install命令安装CocoaLumberjack
5.安装完后,重启Xcode

成功安装CocoaLumberjack.png

2.为Xcode添加颜色插件

1.这里可以通过github搜索XcodeColors下载安装或者其他方式安装后,重启Xcode
2.在AppDelegate.m文件中添加

[DDLog addLogger:[DDTTYLogger sharedInstance]]; // 标准lumberjack初始化
[[DDTTYLogger sharedInstance] setColorsEnabled:YES];// 启用颜色区分

3.依次执行Xcode->Product->Scheme->Edit Scheme打开配置文件。在如下图片添加参数

Xcode配置.png

3.创建一个pch全局配置文件

1.在Xcode->Build Setting ->prefix Header配置添加pch文件

添加pch文件.png

2.在pch文件中添加需要导入用的头文件

#import <DDLog.h>
#import <CocoaLumberjack.h>
#import "HJConstants.h" // 常量文件

#ifdef DEBUG
    #define HJLogError(...) DDLogError(__VA_ARGS__); // 红色
    #define HJLogWarn(...) DDLogWarn(__VA_ARGS__); // 橙色
    #define HJLogInfo(...) DDLogInfo(__VA_ARGS__); // 默认是黑色
    #define HJLogVerbose(...) DDLogVerbose(__VA_ARGS__); // 默认是黑色
#else
    #define HJLogError(...)
    #define HJLogWarn(...)
    #define HJLogInfo(...)
    #define HJLogVerbose(...)
#endif

4.创建一个常量文件用来保持常量

1.在.h文件中添加

extern int ddLogLevel;

2.在.m文件中添加

int ddLogLevel =
#ifdef DEBUG
    LOG_LEVEL_VERBOSE;
#else
    LOG_LEVEL_OFF;
#endif

3.描述一下LOG_LEVEL的不同等级所代表的做用

1.如果你将日志级别设置为 LOG_LEVEL_ERROR,那么你只会看到DDlogError语句。
2.如果你将日志级别设置为LOG_LEVEL_WARN,那么你只会看到DDLogError和DDLogWarn语句。
3.如果您将日志级别设置为 LOG_LEVEL_INFO,那么你会看到error、Warn和Info语句。
4.如果您将日志级别设置为LOG_LEVEL_VERBOSE,那么你会看到所有DDLog语句。
5.如果您将日志级别设置为 LOG_LEVEL_OFF,你将不会看到任何DDLog语句。

4.输出想要的结果

输出结果.png

5.当然我们也可以自定义输出的颜色,只需要执行类似如下方法就可以实现

// Let's customize our colors.
// DDLogInfo : Pink
#if TARGET_OS_IPHONE
UIColor *pink = [UIColor colorWithRed:(255/255.0) green:(58/255.0) blue:(159/255.0) alpha:1.0];
#elseNSColor *pink = [NSColor colorWithCalibratedRed:(255/255.0) green:(58/255.0) blue:(159/255.0) alpha:1.0];
#endif
[[DDTTYLogger sharedInstance] setForegroundColor:pink backgroundColor:nil forFlag:DDLogFlagInfo];
DDLogInfo(@"Warming up printer"); // Prints in Pink !

最后添加github例子地址github

上一篇下一篇

猜你喜欢

热点阅读