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.不包含引号
最后 附上封装好的源码