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.不包含引號

最后 附上封裝好的源碼

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容