CocoaLumberjack的使用和简单封装

CocoaLumberjack是一个非常好用的日志框架 可以在一定程度上提升开发效率

废话不多说 毕竟是别人造好的轮子 使用起来是很方便的

       首先 可以使用的导入方法有三种

              简单暴力直接拖

              Cocoapods

              Carthage

       随你便了= =...

       然后 你需要配置一下 这段代码可以直接在appdelegate中抽成一个方法 也可以封装到单独的类中做一个隔离

[DDLog addLogger:[DDTTYLogger sharedInstance]]; // TTY = Xcode console 开启Xcode控制台日志输出
//配置日志颜色
//默认有五中类别的日志 分别是Error Warning Info Debug Verbose
[[DDTTYLogger sharedInstance] setColorsEnabled:YES];
[[DDTTYLogger sharedInstance] setForegroundColor:DDMakeColor(255, 255, 255) backgroundColor:DDMakeColor(255, 0, 0) forFlag:DDLogFlagError];//错误信息为红白
[[DDTTYLogger sharedInstance] setForegroundColor:DDMakeColor(255, 255, 0) backgroundColor:DDMakeColor(0, 0, 0) forFlag:DDLogFlagWarning];//警告为黑黄
[[DDTTYLogger sharedInstance] setForegroundColor:DDMakeColor(255, 255, 255) backgroundColor:DDMakeColor(0, 0, 255) forFlag:DDLogFlagInfo];//信息为蓝白
[[DDTTYLogger sharedInstance] setForegroundColor:DDMakeColor(255, 97, 0) backgroundColor:DDMakeColor(0, 0, 0) forFlag:DDLogFlagDebug];//调试为黑橙
[[DDTTYLogger sharedInstance] setForegroundColor:DDMakeColor(0, 255, 0) backgroundColor:DDMakeColor(0, 0, 0) forFlag:DDLogFlagVerbose];//详细信息为黑绿
// 进阶设置
// [DDLog addLogger:[DDASLLogger sharedInstance]]; // ASL = Apple System Logs
// DDFileLogger *fileLogger = [[DDFileLogger alloc] init]; // File Logger
// fileLogger.rollingFrequency = 60 * 60 * 24; // 24 hour rolling
// fileLogger.logFileManager.maximumNumberOfLogFiles = 7;

//    [DDLog addLogger:fileLogger];

       然后为了方便 我们通常会在日志里面包含 文件 行数 类型名 等等的详细信息方便定位
       那么在cocoalumberjack中要怎么实现呢?
       答案就是 建立自定义DDLogFormatter
       首先你需要建立一个遵守 DDLogFormatter 协议的类
       然后实现
              - (NSString *)formatLogMessage:(DDLogMessage *)logMessage方法
              这是->官方详解

       实现可以是酱紫的:

-(NSString *)formatLogMessage:(DDLogMessage *)logMessage {
       NSString *logLevel;
              switch (logMessage->_flag) {
                     case DDLogFlagError : logLevel = @"❗️❗️❗️"; break;
                     case DDLogFlagWarning : logLevel = @"⚠️"; break;
                     case DDLogFlagInfo : logLevel = @"ℹ️"; break;
                     case DDLogFlagDebug : logLevel = @"🔧"; break;
                     default : logLevel = @"🚩"; break;
              }
              //以上是根据不同的类型 定义不同的标记字符
       return [NSString stringWithFormat:@"%@ %@(line:%zd)->%@: %@\n", logLevel, logMessage->_fileName, logMessage->_line, logMessage->_function, logMessage->_message];
              //以上就是加入文件名 行号 方法名的
}

       使用方法就是在你的配置中加入如下代码(类名为CocoaLumberjackCustomFomatter):

[DDTTYLogger sharedInstance].logFormatter = [[CocoaLumberjackCustomFomatter alloc] init];

       由于此框架默认会为Debug/Release启用不同的日志级别
       所以有的时候你发现 如上配置好了后 运行报错了= =.
       所以你需要在 pch上加入如下的定义
       想搞明白为什么 请跳转-为什么

       #ifdef DEBUG
              static const int ddLogLevel = DDLogLevelVerbose;
       #else
              static const int ddLogLevel = DDLogLevelError;
       #endif

       然后下面附上一些个人用的pch定义 当然是跟主题相关的

       #import <CocoaLumberjack/CocoaLumberjack.h>
       #define NSLog(frmt, ...) //不使用系统自带输出
       #define NSErrorLog(frmt, ...) DDLogError(frmt, ##VA_ARGS)//错误信息为红白
       #define NSWarnLog(frmt, ...) DDLogWarn(frmt, ##VA_ARGS)//警告为黑黄
       #define NSInfoLog(frmt, ...) DDLogInfo(frmt, ##VA_ARGS)//信息为蓝白
       #define NSDebugLog(frmt, ...) DDLogDebug(frmt, ##VA_ARGS)//调试为白黑
       #define NSVerboseLog(frmt, ...) DDLogVerbose(frmt, ##VA_ARGS)//版本信息为橙色
/// 若项目中使用到了Objective-C++ 因为涉及到OC与OC++、C++的混编问题 直接使用CocoaLumberjack会有问题 如果不想麻烦处理 使用如下的打印宏会方便很多
       #define CPPLog(FORMAT, ...) fprintf(stderr,"%s---%d---\t%s\n",[[[NSString stringWithUTF8String:FILE] lastPathComponent] UTF8String], LINE, [[NSString stringWithFormat:FORMAT, ##VA_ARGS] UTF8String]);

       只需要吧最后的两段宏定义放到pch中 然后把封装好的拖到项目中 就可以使用 NSErrorLog等等开心的用了 当然前提是你导入框架了= =.还有 关于颜色的开启~
       安装XcodeColors插件
       打开 Scheme Editor (Product -> Edit Scheme...)
       左侧选择Run, 选择 "Arguments" 分页
       添加一个新的 Environment Variable -> "XcodeColors", 值为"YES" Ps.不包含引号

最后 附上封装好的源码

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容