iOS开发之CocoaLumberjack
Cocoa LumberJack是一个功能强大的NSlog,是通用的Cocoa日志框架之一。它可以提供更高级的log功能,比如记录log至文件或网络,并可根据log的级别(info、debug、warn、error)进行筛选。众所周知,NSlog虽然功能强大,但却普遍存在不支持分级别log、仅支持本地打印的问题,而且在大量处理log时,会降低程序运行效率。而Cocoa LumberJack则不存在这样的制约。源码地址在: https://github.com/robbiehanson/CocoaLumberjack/wiki/GettingStarted,下面介绍如何使用:
- 把框架添加到你的应用程序
主要添加的文件有以下四个
@ DDLog(基础框架)
@ DDASLLogger(发送到苹果的日志系统,他们显示到控制台上),个人建议没有必要
@DDTTYLoyger (发送日志语句到控制台)
@DDFIleLoger (把输出信息写进文件中)
DDLog是强制性的,其余的都是可选的,这取决于你如何打算使用这个框架,如果你不打算纪录到一个文件,你可以跳过DDFileLogger,或者你想跳过ASl 在你的爱好快速纪录日志,你可以跳过DDASLLoger
- 配置框架
第一件事情你要做的是在你applicationDidFinishLaunching方法中配置(通常是这么做)添加你所需要的文件
下面几行代码是在开始的时候所需要的
1 2 | [DDLog addLogger:[DDASLLogger sharedInstance]]; [DDLog addLogger:[DDTTYLogger sharedInstance]];<br>fileLogger = [[DDFileLogger alloc] init];<br>fileLogger.rollingFrequency = 60 * 60 * 24; <br> // 24 hour rolling<br>fileLogger.logFileManager.maximumNumberOfLogFiles = 7;<br>[DDLog addLogger:fileLogger]; |
上面两行代码添加了一对logging框架,换句话说,你的日志语句已经能够发送到控制台,(就像一个正常的NSLog)
这个框架的好处之一就是它的灵活性,如果你还想要你的日志语句写入到一个文件中,你可以添加和配置fileLogger
- 用Lumberjack输入代替你的NSLog输出
DDLog的头文件定义了宏,您将使用来取代你的NSLog语句。你可以参考下面的语句来代替你的NSlog
1 2 3 4 5 6 7 | // 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配置水平,每记录器级别等。但是我们会去,在另一篇文章)。
下面是详细的如何在你的代码中运用这个框架
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | // 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包上传上去,生成二维码,测试人员在手机上扫码二维码,就可以直接安装最新的测试版本了,好用的让人想哭。
目前需要邀请码注册,我这里有几枚邀请码,需要的私信我邮箱,或者自己去申请邀请码。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述