当前位置: 首页 > 科技观察

CocoaLumberjack

时间:2023-03-12 02:47:45 科技观察

CocoaLumberjack是iOS开源项目的日志框架,是Mac和iOS上快速、简单、强大、灵活的日志框架。CocoaLumberjack类似于流行的日志记录框架(例如log4j),但它是专门为Objective-C设计的,利用具有多线程、GCD(如果可用)、无锁原子操作的Objective-C运行时的动态特性。在大多数用例中,FastLumberjack比NSLog快一个数量级。简单:当应用程序启动时,Lumberjack只需一行代码即可配置。然后只需将NSLog语句替换为DDLog语句即可。DDLog宏与NSLog的格式和语法完全相同,因此超级简单。强大一条日志语句可以发送到多个记录器,这意味着您可以同时记录文件和控制台。此外,您还可以创建自己的记录器,将日志语句发送到网络、数据库或分布式文件系统。没有限制。灵活配置您想要的日志记录框架。修改每个文件的日志级别(尤其是测试时)。修改每个记录器的日志级别(详细的控制台,但简洁的日志文件)。修改每个Xcode配置的日志级别。为您的应用程序自定义日志级别数。添加您自己的细粒度日志。在运行时动态修改日志级别。选择回滚日志文件的方式和时间。将日志文件上传到中央服务器。压缩存档日志文件以节省硬盘空间。当你遇到一种情况,你可以选择Lumberjack框架:1.你想找到一种方法来跟踪程序中不断出现的最新bug;2、您对iPhone上的短登录感到失望;3..您想将您的应用程序升级到一个新的水平以获得系统支持和稳定性;4.为您的应用程序(Mac或iPhone)寻找企业级日志记录解决方案。如何开始使用Lumberjack框架通过三个步骤开始使用CocoaLumberjack框架:1.将Lumberjack文件添加到您的项目;2.配置框架;3.将NSLog指令转换为使用Lumberjack宏;将Lumberjack框架添加到你的项目中主要需要添加四个文件:1.@DDLog(整个框架的基础)2.@DDASLLogger(向Apple的日志系统发送日志语句,以便在Console上显示。app)3.@DDTTYLoyger(将日志语句发送到Xcode控制台,如果可用)4.@DDFIleLoger(将日志语句发送到文件)DDLog是必需的,其余的是可选的,具体取决于您打算如何使用该框架。例如,如果您不打算记录到文件,则可以跳过DDFileLogger,或者如果您想跳过ASL以加快文件记录速度,则可以跳过DDASLLogger。配置框架首先,您要在应用程序中配置日志记录框架,通常是在applicationDidFinishLaunching方法中。要开始,您需要以下两行代码:[DDLogaddLogger:[DDASLLoggersharedInstance]];[DDLogaddLogger:[DDTTYLoggersharedInstance]];这将为您的日志记录框架添加两个“记录器”。这意味着您的日志语句将被发送到Console.app和Xcode控制台(就像标准的NSLog一样)。这个框架的好处之一就是它的灵活性,如果你也希望你的日志语句写入一个文件中,你可以添加并配置一个文件记录器:fileLogger=[[DDFileLoggeralloc]init];fileLogger.rollingFrequency=60*60*24;//24hourrollingfileLogger.logFileManager.maximumNumberOfLogFiles=7;[DDLogaddLogger:fileLogger];上面的代码告诉应用程序在系统上保留一周的日志文件。用DDLog替换NSLog语句DDLog头文件定义了用于替换NSLog语句的宏,基本上看起来像这样://Convertfromthis:NSLog(@"Brokensprocketdetected!");NSLog(@"Userselectedfile:%@withSize:%u",filePath,fileSize);//Tothis:DDLogError(@"Brokensprocketdetected!");DDLogVerbose(@"Userselectedfile:%@withSize:%u",filePath,fileSize);我们看到DDLog宏的语法和NSLog完全一样。所以你所要做的就是决定每个NSlog语句属于哪个日志级别。DDLog默认有四个级别的日志,分别是:1.@DDlogError2.@DDlogWarn3.@DDlogInfo4.@DDlogVerbose(注意:你也可以自定义级别和级别名称或者添加更细粒度的控制来替换系统简单的四级级别。)当然,选择哪个NSLog语句取决于消息的严重性。以下不同的日志级别可能是您所需要的: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语句。那么日志级别在哪里设置,是否可以在整个项目中只使用一个日志级别呢?当然不是,我们都知道就像调试或者添加新功能一样,如果你想详细记录你当前正在做的部分,Lumberjack框架提供了除了per-file调试控制之外,你只能修改日志级别您正在编辑的文件。(注意:当然还有很多其他的高级选项,比如全局日志级别、Xcodeperconfigurationlevel、perloggerlevel等,我们将在另一篇文章中介绍)。以下是转换日志语句的方法://CONVERTFROMTHIS#import"Sprocket.h"@implementationSprocket-(void)someMethod{NSLog(@"MeetGeorgeJetson");}@end//TOTHIS#import"Sprocket.h"#import"DDLog.h"staticconstintddLogLevel=LOG_LEVEL_VERBOSE;@implementationSprocket-(void)someMethod{DDLogVerbose(@"MeetGeorgeJetson");}@end注意日志级别被声明为常量,这意味着超过日志级别阈值的DDLog语句将被编译到你的项目中。自动引用计数(ARC)***Lumberjack的版本使用ARC。如果您的项目不使用ARC,您可以在ARC页面上了解如何在Xcode中将Lumberjack文件正确标记为ARC。有关Lumberjack的更多信息:自动为您的调试版本和发布版本使用不同的日志级别根据您的需要定制日志级别根据记录器设置过滤日志编写您自己的自定义格式化程序编写您自己的自定义记录器等等...原帖:CocoaLumberjack