iOS開發之CocoaLumberjack

程式苦行僧發表於2014-04-08

 Cocoa LumberJack是一個功能強大的NSlog,是通用的Cocoa日誌框架之一。它可以提供更高階的log功能,比如記錄log至檔案或網路,並可根據log的級別(info、debug、warn、error)進行篩選。眾所周知,NSlog雖然功能強大,但卻普遍存在不支援分級別log、僅支援本地列印的問題,而且在大量處理log時,會降低程式執行效率。而Cocoa LumberJack則不存在這樣的制約。原始碼地址在: https://github.com/robbiehanson/CocoaLumberjack/wiki/GettingStarted,下面介紹如何使用:

  1. 把框架新增到你的應用程式

主要新增的檔案有以下四個

 @ DDLog(基礎框架)

 @ DDASLLogger(傳送到蘋果的日誌系統,他們顯示到控制檯上),個人建議沒有必要

 @DDTTYLoyger (傳送日誌語句到控制檯)

 @DDFIleLoger (把輸出資訊寫進檔案中)

DDLog是強制性的,其餘的都是可選的,這取決於你如何打算使用這個框架,如果你不打算紀錄到一個檔案,你可以跳過DDFileLogger,或者你想跳過ASl 在你的愛好快速紀錄日誌,你可以跳過DDASLLoger

  1. 配置框架

  第一件事情你要做的是在你applicationDidFinishLaunching方法中配置(通常是這麼做)新增你所需要的檔案

  下面幾行程式碼是在開始的時候所需要的

[DDLog addLogger:[DDASLLogger sharedInstance]];
[DDLog addLogger:[DDTTYLogger sharedInstance]];
fileLogger = [[DDFileLogger alloc] init];
fileLogger.rollingFrequency = 60 * 60 * 24;
// 24 hour rolling
fileLogger.logFileManager.maximumNumberOfLogFiles = 7;
[DDLog addLogger:fileLogger];

  上面兩行程式碼新增了一對logging框架,換句話說,你的日誌語句已經能夠傳送到控制檯,(就像一個正常的NSLog)

  這個框架的好處之一就是它的靈活性,如果你還想要你的日誌語句寫入到一個檔案中,你可以新增和配置fileLogger

  1. 用Lumberjack輸入代替你的NSLog輸出

DDLog的標頭檔案定義了宏,您將使用來取代你的NSLog語句。你可以參考下面的語句來代替你的NSlog

// 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配置水平,每記錄器級別等。但是我們會去,在另一篇文章)。
下面是詳細的如何在你的程式碼中運用這個框架

// 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包上傳上去,生成二維碼,測試人員在手機上掃碼二維碼,就可以直接安裝最新的測試版本了,好用的讓人想哭。

目前需要邀請碼註冊,我這裡有幾枚邀請碼,需要的私信我郵箱,或者自己去申請邀請碼。

 


相關文章