Cocoa LumberJack是一个功能强大的NSlog,是通用的Cocoa日志框架之一。它可以提供更高级的log功能,比如记录log至文件或网络,并可根据log的级别(info、debug、warn、error)进行筛选。众所周知,NSlog虽然功能强大,但却普遍存在不支持分级别log、仅支持本地打印的问题,而且在大量处理log时,会降低程序运行效率。而Cocoa LumberJack则不存在这样的制约。源码地址在: https://github.com/robbiehanson/CocoaLumberjack/wiki/GettingStarted,下面介绍如何使用:

  1. 把框架添加到你的应用程序

主要添加的文件有以下四个

@ DDLog(基础框架)

@ DDASLLogger(发送到苹果的日志系统,他们显示到控制台上),个人建议没有必要

@DDTTYLoyger (发送日志语句到控制台)

@DDFIleLoger (把输出信息写进文件中)

DDLog是强制性的,其余的都是可选的,这取决于你如何打算使用这个框架,如果你不打算纪录到一个文件,你可以跳过DDFileLogger,或者你想跳过ASl 在你的爱好快速纪录日志,你可以跳过DDASLLoger

  1. 配置框架

  第一件事情你要做的是在你applicationDidFinishLaunching方法中配置(通常是这么做)添加你所需要的文件

  下面几行代码是在开始的时候所需要的

[DDLog addLogger:[DDASLLogger sharedInstance]];
[DDLog addLogger:[DDTTYLogger sharedInstance]];
fileLogger = [[DDFileLogger alloc] init];
fileLogger.rollingFrequency = 60 * 60 * 24;
// 24 hour rolling
fileLogger.logFileManager.maximumNumberOfLogFiles = 7;
[DDLog addLogger:fileLogger];

  上面两行代码添加了一对logging框架,换句话说,你的日志语句已经能够发送到控制台,(就像一个正常的NSLog)

  这个框架的好处之一就是它的灵活性,如果你还想要你的日志语句写入到一个文件中,你可以添加和配置fileLogger

  1. 用Lumberjack输入代替你的NSLog输出

DDLog的头文件定义了宏,您将使用来取代你的NSLog语句。你可以参考下面的语句来代替你的NSlog

// Convert from this:
NSLog(@"Broken sprocket detected!");
NSLog(@"User selected file:%@ withSize:%u", filePath, fileSize); // To this:
DDLogError(@"Broken sprocket detected!");
DDLogVerbose(@"User selected file:%@ withSize:%u", filePath, fileSize);

我们看到DDLog和NSLog有这完全相同的语法,在使用的时候不会有人和的障碍。

DDLog默认有四种级别的日志,你所要做的就是决定使用那种日志级别来打印你的日志语句,它们分别是:

@DDlogError
@DDlogWarn
@DDlogInfo
@DDlogVerbose

注释:你也可以自定义级别,你可以添加上更细微的控制代替系统四个简单的等级。
当然你选择那个NSLog语句,这取决于你的消息的严重程度。

下面的这些不同的日志等级也许正有你所需要的

如果你设置的日志级别为 LOG_LEVEL_ERROR那么你只会看到DDlogError语句的输出。
如果你将日志的级别设置为LOG_LEVEL_WARN那么你只会看到DDLogError和DDLogWarn语句。
如果您将日志级别设置为 LOG_LEVEL_INFO,您将看到error、Warn和信息报表。
如果您将日志级别设置为LOG_LEVEL_VERBOSE,您将看到所有DDLog语句。
如果您将日志级别设置为 LOG_LEVEL_OFF,你不会看到任何DDLog语句。

那么我在哪里设置日志级别?我必须使用一个日志级别为我的整个项目吗?

当然不是,我们都知道它就像调试或者添加新的特性,你想详细纪录你目前正在调试的部分,这个框架提供了对每个文件的调试,所以你可以修改日志级别在你正在编辑的文件中。

注释:(当然还有许多其他高级选项,比如全球日志级别,每xcode配置水平,每记录器级别等。但是我们会去,在另一篇文章)。
下面是详细的如何在你的代码中运用这个框架

// CONVERT FROM THIS

#import "Sprocket.h"

@implementation Sprocket

- (void)someMethod
{
NSLog(@"Meet George Jetson");
} @end // TO THIS #import "Sprocket.h"
#import "DDLog.h" static const int ddLogLevel = LOG_LEVEL_VERBOSE; @implementation Sprocket - (void)someMethod
{
DDLogVerbose(@"Meet George Jetson");
} @end

 

注意日志级别声明为常数,这意味着DDLog以上声明的日志级别将被认为默认值,编译到你的项目中。(当你的编译器优化打开的时候,那就是你的发布版本)

----文章完----

最后,推荐一个神器

内测宝

个人觉得比TestFlight更简单好用,开发者只需要简单把打好的ipa包上传上去,生成二维码,测试人员在手机上扫码二维码,就可以直接安装最新的测试版本了,好用的让人想哭。

目前需要邀请码注册,我这里有几枚邀请码,需要的私信我邮箱,或者自己去申请邀请码。

												

iOS开发之CocoaLumberjack的更多相关文章

  1. iOS开发之Socket通信实战--Request请求数据包编码模块

    实际上在iOS很多应用开发中,大部分用的网络通信都是http/https协议,除非有特殊的需求会用到Socket网络协议进行网络数 据传输,这时候在iOS客户端就需要很好的第三方CocoaAsyncS ...

  2. iOS开发之UISearchBar初探

    iOS开发之UISearchBar初探 UISearchBar也是iOS开发常用控件之一,点进去看看里面的属性barStyle.text.placeholder等等.但是这些属性显然不足矣满足我们的开 ...

  3. iOS开发之UIImage等比缩放

    iOS开发之UIImage等比缩放 评论功能真不错 评论开通后,果然有很多人吐槽.谢谢大家的支持和关爱,如果有做的不到的地方,还请海涵.毕竟我一个人的力量是有限的,我会尽自己最大的努力大家准备一些干货 ...

  4. iOS开发之 Xcode6 添加xib文件,去掉storyboard的hello world应用

    iOS开发之  Xcode6.1创建仅xib文件,无storyboard的hello world应用 由于Xcode6之后,默认创建storyboard而非xib文件,而作为初学,了解xib的加载原理 ...

  5. iOS开发之loadView、viewDidLoad及viewDidUnload的关系

    iOS开发之loadView.viewDidLoad及viewDidUnload的关系 iOS开发之loadView.viewDidLoad及viewDidUnload的关系    标题中所说的3个方 ...

  6. iOS开发之info.pist文件和.pch文件

    iOS开发之info.pist文件和.pch文件 如果你是iOS开发初学者,不用过多的关注项目中各个文件的作用.因为iOS开发的学习路线起点不在这里,这些文件只会给你学习带来困扰. 打开一个项目,我们 ...

  7. iOS开发之WKWebView简单使用

    iOS开发之WKWebView简单使用   iOS开发之 WKWebVeiw使用 想用UIWebVeiw做的,但是突然想起来在iOS8中出了一个新的WKWebView,算是UIWebVeiw的升级版. ...

  8. iOS 开发之Block

    iOS 开发之Block 一:什么是Block.Block的作用 UI开发和网络常见功能的实现回调,按钮事件的处理方法是回调方法. 1.     按钮事件 target action 机制. 它是将一 ...

  9. iOS开发之Xcode常用调试技巧总结

    转载自:iOS开发之Xcode常用调试技巧总结 最近在面试,面试过程中问到了一些Xcode常用的调试技巧问题.平常开发过程中用的还挺顺手的,但你要突然让我说,确实一脸懵逼.Debug的技巧很多,比如最 ...

随机推荐

  1. Windows下图文详解PHP三种运行方式(php_mod、cgi、fastcgi)

    PHP能不能成功的在Apache服务器上运行,就看我们如何去配置PHP的运行方式.PHP运行目前为止主要有三种方式: a.以模块加载的方式运行,初学者可能不容易理解,其实就是将PHP集成到Apache ...

  2. Windows 7安装解压版MySQL 5.6(不包含配置文件优化)

    到官网下载MySQL5.6 下载地址:http://dev.mysql.com/downloads/mysql/5.6.html, 提供了 .exe版本 和 .zip解压版,因为我的操作系统是64位的 ...

  3. 【PHP升级】CentOS6.3编译安装 PHP5.4.38

    先前安装的PHP5.3.28(参考:CentOS6.3编译安装Nginx1.4.7 + MySQL5.5.25a + PHP5.3.28),现在准备升级PHP到5.4.38,有如下几个地方需要重新编译 ...

  4. HDU 3966 Aragorn's Story 树链剖分

    Link: http://acm.hdu.edu.cn/showproblem.php?pid=3966 这题注意要手动扩栈. 这题我交g++无限RE,即使手动扩栈了,但交C++就过了. #pragm ...

  5. JQuery 菜鸟笔记(一)

    什么是JQuery JQuery是一个优秀的javascript类库,jQuery以其简洁.快速等优点征服了众多javascript开发者.jQuery使用户能更方便地处理DOM.events.实现动 ...

  6. 两个已排序数组进行合并后的第K大的值--进军硅谷

    我看到此题时,首先想到一个一个比较遍历过去,这是最暴力的方法,后面我想到了已经排序,那么对每个数组进行二分,然后比较这两个值.此书第三种解法,挺不错,只对那个长度较小的数组进行二分查找,保证i+j-1 ...

  7. virtualbox

    下载安装:http://wiki.centos.org/zh/HowTos/Virtualization/VirtualBox

  8. VC++ 制作一个简易的控制台时钟应用

    1.下载EasyX Library for C++ (http://www.easyx.cn/) 直接下载:EasyX_20151015(beta) EasyX 绘图库目前支持 Visual C++ ...

  9. GNU/Linux下LVM配置管理以及快照卷、物理卷、卷组、逻辑卷的创建和删除

    LVM是Linux环境中对磁盘分区进行管理的一种机制,是建立在硬盘和分区之上.文件系统之下的一个逻辑层,可提高磁盘分区管理的灵活性.最大的优点是在不损伤数据的前提下调整存储空间的大小. 本篇主要讲述L ...

  10. 第一个JSP

    还是大一暑假学的Java,知识掌握了第一阶段的Java基础知识, 后面想自己进阶第二阶段,学习JavaWeb,一直拖到现在直接从Java第二阶段写了~~~ 希望指正: 这次主要还是第一个Hello W ...