iOS开发中善用日志记录工具

在iOS开发中经常需要靠记录日志来调试应用程序,最常见的做法是使用NSLog来输出相关的信息。大量的使用NSLog存在一定的弊端,将设备连接到电脑,打开XCode中的Device->Console,就可以从console查看到每条日志信息(或者是使用iTools的实时日志,推荐使用)。试想如果将很多核心的算法或者是信息都通过NSLog打印到控制台上,那么很有可能会被其他人获取到相关信息造成很多安全隐患,另外这样的应用也极有可能被Apple拒绝审核通过。

console_log.png

使用宏来处理

常用的做法是在PCH文件添加如下的代码:

1
2
3
4
5
#ifdef DEBUG
#define DebugLog(format, ...) NSLog((@"%s [Line %d] " format), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__)
#else
#define DebugLog(...) do { } while (0)
#endif

然后将NSLog替换为DebugLog即可。

使用CocoaLumberjack替代NSLog

LumberjackLogo.png

CocoaLumberjack是Mac和iOS上一个集快捷、简单、强大和灵活于一身的日志框架。CocoaLumberjack类似于流行的日志框架(如log4j),但它是专为Objective-C设计的,利用了多线程、GCD(如果可用)、无锁原子操作Objective-C运行时的动态特性。

CocoaLumberjack基本组件

CocoaLumberjack是由DDASLLoggerDDTTYLoggerDDFileLogger三个Log组件组成,各自的功能描述如下:

  • DDASLLogger:支持将调试语句写入到苹果的日志中。一般正对Mac开发。。
  • DDTTYLogger:支持将调试语句写入xCode控制台。在iOS开发中使用。
  • DDFileLogger:支持将调试语句写入到文件系统。。
1、快速集成

(1)下载CocoaLumberjack,引入CocoaLumberjack的头文件

#import "DDLog.h"

(2)指定日志的记录级别

static const int ddLogLevel = LOG_LEVEL_VERBOSE;

或者是

1
2
3
4
5
#ifdef DEBUG
static const int ddLogLevel = LOG_LEVEL_VERBOSE;
#else
static const int ddLogLevel = LOG_LEVEL_OFF;
#endif

日志的级别有如下几种:

  • LOG_LEVEL_ERROR:如果设置为LOG_LEVEL_ERROR,仅仅能看到Error相关的日志输出。
  • LOG_LEVEL_WARN:如果设置为LOG_LEVEL_WARN,能看到Error、Warn相关的日志输出。
  • LOG_LEVEL_INFO:如果设置为LOG_LEVEL_INFO,能够看到Error、Warn、Info相关的日志输出。
  • LOG_LEVEL_DEBUG:如果设置为LOG_LEVEL_DEBUG,能够看到Error/Warn/Info/Debug相关的日志输出。
  • LOG_LEVEL_VERBOSE:如果设置为LOG_FLAG_VERBOSE,能够看到所有级别的日志输出。
  • LOG_LEVEL_OFF:不输出日志。

(3)使用DDLogError/DDLogWarn/DDLogDebug/DDLogVerbose来替代NSLog

1
2
3
4
5
DDLogError(@"[Error]:%@", @"输出错误信息");//输出错误信息
DDLogWarn(@"[Warn]:%@", @"输出警告信息");//输出警告信息
DDLogInfo(@"[Info]:%@", @"输出描述信息");//输出描述信息
DDLogDebug(@"[Debug]:%@", @"输出调试信息");//输出调试信息
DDLogVerbose(@"[Verbose]:%@", @"输出详细信息");//输出详细信息
2、结合XcodeColor让日志带上颜色

有了解过Android开发的朋友都会知道,在Android开发中LogCat的日志查看功能是十分强大的,特别是不同级别的日志输出显示的颜色是不同的,例如错误信息的颜色是红色的,其实在Xcode中结合XcodeColor插件也是可以实现该效果的,具体的配置步骤如下:

(1)下载安装插件

https://github.com/DeepIT/XcodeColors下载XcodeColors插件,直接使用Xcode打开XcodeColors.xcodeproj文件,然后Command+B编译项目可以自动将插件安装至~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/XcodeColors.xcplugin路径下。

也可以使用Alcatraz来安装插件,具体请参考《使用Alcatraz来管理Xcode插件》

(2)重启Xcode,运行测试用例

彻底退出Xcode,重新启动Xcode。再次打开XcodeColors.xcodeproj运行TestXcodeColors的target,测试插件是否安装成功。

(2)CocoaLumberjack开启颜色分级

[DDTTYLogger sharedInstance].colorsEnabled = YES;

各个的级别的颜色如下:

1
2
3
4
5
DDLogError(@"Error");//红色
DDLogWarn(@"Warn");//黄色
DDLogInfo(@"Info");//默认是黑色
DDLogDebug(@"Debug");//默认是黑色
DDLogVerbose(@"Verbose");//默认是黑色

如果要设置不同分级的颜色值,可以使用如下代码:

1
[[DDTTYLogger sharedInstance] setForegroundColor:[UIColor orangeColor] backgroundColor:nil forFlag:LOG_FLAG_INFO];//设置INFO级别的日志的颜色为橙色

效果如下图所示:

log_color_level.png

说明:

可能在Xcode中无法正常显示颜色,需要配置Xcode的环境变量,设置“Edit Scheme”-> “Run” –> “Arguments”(Environment Variabl)环境变量,添加一个叫做XcodeColors并且设置值为YES,如下图所示。

xcode_color_config.png

原文:点击打开链接

参考资料

1、《XcodeColors.md》

2、《CocoaLumberjack——带颜色的Log》

3、《iOS第三方库-CocoaLumberjack-DDLog 》

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值