CocoaLumberjack支持ios日志文件异步记录,日志文件覆盖保存,5级别日志记录,xcode的彩色日志,作者经常维护更新,大部分的日志都基于该架构,但存在使用极为困难的问题。现总结一下使用心得,让你从零做起也能使用CocoaLumberjack日志架构的全部功能。测试环境:xcode6.2
CocoaLumberjack的下载链接是:https://github.com/CocoaLumberjack/CocoaLumberjack
xCode扩展插件XcodeColors下载链接:https://github.com/robbiehanson/XcodeColors

CocoaLumberjack该类型日志系统的原创者,并且不断及时更新,其它的库如Lumberjack都是基于它改编而成,更新困难或根本不更新。
CocoaLumberjack的优点是支持mac工程和iOS功能,提供彩色日志,但是需要用pod install的方式导入类库,对工程导入一次更新最新的CocoaLumberjack库时只要不存在文件名的变更就不用再导入了,有后台线程异步存储日志。
建议使用CocoaLumberjack,不断完善的库才能更健壮。
DDASLLogger:支持将调试语句写入到苹果的日志中。一般正对Mac开发。可选。就是发往mac控制台的系统日志。
DDTTYLogger:支持将调试语句写入xCode控制台。我们即使要用它。可选。可以支持彩色日志,使用了它便于问题定位,很好用
DDFileLogger:支持将调试语句写入到文件系统。可选。保存日志文件的个数可以指定,超过制定个数就干掉最早的日志(覆盖写日志),日志文件文件最大尺寸可以制定,最大切换文件时间可以指定,当文件超过最大文件尺寸或最大文件切换时间到并且有新的日志文件时就重新建立一个日志文件。日志文件放在类事下面的文件夹下,该文件在iPhone中一般不能直接看到。可以通过修改文件路径和工程参数可以导出日志文件。 /var/mobile/Containers/Data/Application/CECD8580-EEE6-4582-8CC0-79EEEB06146A/Documents/Logs
CocoaLumberjack有很多使用的陷阱,不然不是使用不起来就是部分功能无效:
第一:下载并安装XcodeColors。
第二:引入第三方库CocoaLumberjack。
第三:把下载库文件夹及子文件夹的文件加入工程(CocoaLumberjack-master/Classes),删除CocoaLumberjack.swift(不删除该文件编译不通过)。
第四:编辑工程的scheme,把run中的arguments中增加XcodeColors并设置为YES
第五:在预编头文件-Prefix.pch头文件中增加包含 #import “CocoaLumberjack.h”和定义日志级别。
内容:

ifdef OBJC

#import "CocoaLumberjack.h"

endif

ifdef DEBUG

static const DDLogLevel ddLogLevel = DDLogLevelVerbose;

else

static const DDLogLevel ddLogLevel = DDLogLevelOff;

endif

第六:在AppDelegate.m或AppDelegate.mm文件中包含Common.h,在- (BOOL)application:(UIApplication )application didFinishLaunchingWithOptions:(NSDictionary )launchOptions函数中增加
[DDLog addLogger:[DDTTYLogger sharedInstance]];
[[DDTTYLogger sharedInstance] setColorsEnabled:YES];
DDFileLogger *fileLogger = [[DDFileLogger alloc] init];
fileLogger.rollingFrequency = 60 * 60 * 24; // 24 hour rolling
fileLogger.logFileManager.maximumNumberOfLogFiles = 7;
[DDLog addLogger:fileLogger];
第七:在需要打印日志的地方增加和NSLOG同样参数的日志:
DDLogError(@”Paper jam%@”, @”dsfsd”);
DDLogWarn(@”Toner is low”);
DDLogInfo(@”Warming up printer (pre-customization)”);
DDLogVerbose(@”Intializing protcol x26 (pre-customization)”);
第八:定制不同类型的日志显示不同的颜色:
DDLogError(@”Paper jam”);
DDLogWarn(@”Toner is low”);
#if TARGET_OS_IPHONE
UIColor *pink = [UIColor colorWithRed:(255/255.0) green:(58/255.0) blue:(159/255.0) alpha:1.0];
#else
NSColor *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 (post-customization)”);
DDLogDebug(@”DDLogDebug”);
#if TARGET_OS_IPHONE
UIColor *gray = [UIColor grayColor];
#else
NSColor *gray = [NSColor grayColor];
#endif
[[DDTTYLogger sharedInstance] setForegroundColor:gray backgroundColor:nil forFlag:DDLogFlagVerbose];
DDLogVerbose(@”Intializing protcol x26 (post-customization)”);

CocoaLumberjack本地化增强功能:

第九:对CocoaLumberjack的功能进行扩展增加通过ituns工具对制定应用的日志文件的导出。
把DDFileLogger.m下的- (NSString *)defaultLogsDirectory函数的NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);修改为:NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);来让日志写在app的可以访问的文档目录下。
在targets的build settings中的Info.list File指向的Info.plist文件中增加一列键值 Application supports iTunes file sharing 类型是Boolean值YES.(注意发布正式版本时要把该属性设置为NO。当它的属性变更并且ituns在使用时,要打开关闭ituns后再打开再能保证ituns访问文件的权限和手机应用的权限一致。)这样就可以在手机连接到电脑上,点击iPhone,点应用程序,在文件共享中点击对应的app,点Logs文件夹,点存储到…指定文件夹就可以导出日志文件了,当文件刷新时导致看不到时,通过点击其它应用再点该应用可以重新刷新出Logs文件夹

第十:对CocoaLumberjack缺少打印日志时的文件名和行数的功能进行扩展。
通过修改你的全局头文件(如:Macro.h中的宏定义来实现,不过那样你就要使用新的打印日志函数。代码如下:

ifndef CLDDLogError

define CLDDLogError(format, …) \

{ \
DDLogError((@”%@.m:%d Err:” format), NSStringFromClass([self class]), LINE, ## VA_ARGS); \
}

endif

ifndef CLDDLogWarn

define CLDDLogWarn(format, …) \

{ \
DDLogWarn((@”%@.m:%d Warn:” format), NSStringFromClass([self class]), LINE, ## VA_ARGS); \
}

endif

ifndef CLDDLogInfo

define CLDDLogInfo(format, …) \

{ \
DDLogInfo((@”%@.m:%d Info:” format), NSStringFromClass([self class]), LINE, ## VA_ARGS); \
}

endif

ifndef CLDDLogDebug

define CLDDLogDebug(format, …) \

{ \
DDLogDebug((@”%@.m:%d Debug:” format), NSStringFromClass([self class]), LINE, ## VA_ARGS); \
}

endif

ifndef CLDDLogVerbose

define CLDDLogVerbose(format, …) \

{ \
DDLogVerbose((@”%@.m:%d Verbose:” format), NSStringFromClass([self class]), LINE, ## VA_ARGS); \
}

endif

参考内容:

一、安装xCode扩展插件XcodeColors

1.下载地址:https://github.com/robbiehanson/XcodeColors

2.下载完成后,打开XcodeColors项目,编译即可。它会在你的电脑中安装插XcodeColors.xcplugin。具体路径在:~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/XcodeColors.xcplugin(可以去瞅一眼)。

3.退出xCode,重新打开。

4.运行TestXcodeColors项目,尝试,是否安装成功。

二、引入第三方库CocoaLumberjack。

1.下载DDLog。下载地址:https://github.com/CocoaLumberjack/CocoaLumberjack

2.将DDLog添加到你的项目中。

unsigned long long const kDDDefaultLogMaxFileSize = 1024 * 1024; // 1 MB
NSTimeInterval const kDDDefaultLogRollingFrequency = 60 * 60 * 24; // 24 Hours
NSUInteger const kDDDefaultLogMaxNumLogFiles = 5; // 5 Files
unsigned long long const kDDDefaultLogFilesDiskQuota = 20 * 1024 * 1024; // 20 MB

char *xcode_colors = getenv(XCODE_COLORS);

if (xcode_colors && (strcmp(xcode_colors, “YES”) == 0))

{

// XcodeColors is installed and enabled!

}

DEMO下载地址:http://download.csdn.net/download/u010742414/8660173,请确保最新的插件XcodeColors

  1. 问题1 Demo里测试日志颜色正常,在自己的项目里就不会显示颜色

    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”

  2. 问题2 内存暴涨问题

加入CocoaLumberjack后,模拟器测试正常,真机测试内存暴涨,导致xcode自动终结联机调试,不调用DDLog相关的代码就没有问题。最终缩小范围,发现把上面的第4步中的Environment Variable给删掉就没有问题,我真是晕了。

CocoaLumberjack的ios应用开发使用指南相关推荐

  1. 《iOS 8开发指南(第2版)》——第1章,第1.3节工欲善其事,必先利其器——搭建开发环境...

    本节书摘来自异步社区<iOS 8开发指南(第2版)>一书中的第1章,第1.1节1.3 工欲善其事,必先利其器--搭建开发环境,作者 管蕾,更多章节内容可以访问云栖社区"异步社区& ...

  2. 《iOS应用开发指南——使用HTML5、CSS3和JavaScript》——导读

    本节书摘来自异步社区<iOS应用开发指南--使用HTML5.CSS3和JavaScript>一书中的目录,作者 [美]Kristofer Layon,更多章节内容可以访问云栖社区" ...

  3. 《iOS 9 开发指南》——第6章,第6.4节 Interface Builder中的故事板——Storyboarding...

    本节书摘来自异步社区<iOS 9 开发指南>一书中的第6章,第6.4节 Interface Builder中的故事板--Storyboarding,作者 管蕾,更多章节内容可以访问云栖社区 ...

  4. 《iOS 9 开发指南》——第6章,第6.7节iOS 9控件的属性

    本节书摘来自异步社区<iOS 9 开发指南>一书中的第6章,第6.7节 iOS 9控件的属性,作者 管蕾,更多章节内容可以访问云栖社区"异步社区"公众号查看 6.7 i ...

  5. 《iOS应用开发指南——使用HTML5、CSS3和JavaScript》——第1章 变小的巨大影响1.1 移动魔力和掌上电脑...

    本节书摘来自异步社区<iOS应用开发指南--使用HTML5.CSS3和JavaScript>一书中的第1章,第1.1节,作者: [美]Kristofer Layon 更多章节内容可以访问云 ...

  6. OpenGL ES应用开发实践指南:iOS卷

    <OpenGL ES应用开发实践指南:iOS卷> 基本信息 原书名:Learning OpenGL ES for iOS:A Hands-On Guide to Modern 3D Gra ...

  7. iPad应用开发实践指南:菜鸟如何用ios 5开发ipad上的复杂应用程序

    <iPad应用开发实践指南>前言 2011年10月,苹果公司首席执行官Tim Cook公布了有关iPad的一些有趣数据,包括: 财富500强公司有92%在测试或部署iPad: 美国本土80 ...

  8. 《音视频开发进阶指南:基于Android与iOS平台的实践》源码下载地址

    年前买了这本书,想看下随书源码,一开始从CSDN下载频道下载电子书+源码,但那个源码不是这边书的. 从网上找了一段时间,终于找到了(其实在书的前言/勘误和支持中有给出),作者展晓凯的相关网站如下: 作 ...

  9. Android开发权威指南(第2版)新书发布

    <Android 开发权威指南(第二版)>是畅销书<Android开发权威指南>的升级版,内容更新超过80%,是一本全面介绍Android应用开发的专著,拥有45 章精彩内容供 ...

最新文章

  1. 火星浏览器_「超详细Filecoin矿工手册」IPFS的应用以及意义 | 火星号精选
  2. Yii的应用主体的配置
  3. 史上最详细 纯CSS打造3D文本滚动
  4. linux系统中怎么复制,linux下如何屏幕拷贝?
  5. java 自定义编译注解 进行代码检查
  6. Java关键字与保留字说明及使用
  7. 【干货】10000个抖音短视频红人通讯录.pdf(附下载链接)
  8. mybatis数据输入
  9. Google Chrome 谷歌浏览器历史版本下载
  10. cad灯具图标_cad灯具图例下载
  11. 角度和弧度之间的转换
  12. 驱动开发:Win10内核枚举SSDT表基址
  13. 基于人脸识别的web展示
  14. Java SE java基础 求营业额
  15. 【P48】锂电池充电和电源自动切换
  16. 怎样快速将excel表格内容转换到word中
  17. 项目风险常见清单列表库
  18. java 语音聊天室_如何实现百万级的语音聊天室
  19. 旁瓣对消原理_自适应旁瓣对消及其在通信对抗系统中的应用研究
  20. ffmpeg 视频转码软件

热门文章

  1. bug记录--------JSON parse error:Cannot deserialize value of type `com.test.EnumTest` from String
  2. CSS 设置页面缩放
  3. 哪款文件比较软件适合程序员
  4. 手把手教你如何快速发表论文(干货)
  5. A 暴力搜索 剪枝是关键
  6. 构建风控评分卡模型介绍(WOE/KS/ROC)
  7. 刘鹏教授诚邀在读博士来南京进行大数据、人工智能课题研究
  8. 前端开源库 CDN 加速
  9. 磁珠法DNA pull down试剂盒、蛋白质-核酸相互作用
  10. c语言plc库,PLC编程-C语言.ppt