Cocoa LumberJack是一個功能強大的NSlog,是通用的Cocoa日誌框架之一。它能夠提供更高級的log功能,好比記錄log至文件或網絡,並可根據log的級別(info、debug、warn、error)進行篩選。衆所周知,NSlog雖然功能強大,但卻廣泛存在不支持分級別log、僅支持本地打印的問題,並且在大量處理log時,會下降程序運行效率。而Cocoa LumberJack則不存在這樣的制約。源碼地址在: https://github.com/robbiehanson/CocoaLumberjack/wiki/GettingStarted,下面介紹如何使用:git
主要添加的文件有如下四個github
@ DDLog(基礎框架)xcode
@ DDASLLogger(發送到蘋果的日誌系統,他們顯示到控制檯上),我的建議沒有必要網絡
@DDTTYLoyger (發送日誌語句到控制檯)app
@DDFIleLoger (把輸出信息寫進文件中)框架
DDLog是強制性的,其他的都是可選的,這取決於你如何打算使用這個框架,若是你不打算紀錄到一個文件,你能夠跳過DDFileLogger,或者你想跳過ASl 在你的愛好快速紀錄日誌,你能夠跳過DDASLLoger測試
第一件事情你要作的是在你applicationDidFinishLaunching方法中配置(一般是這麼作)添加你所須要的文件優化
下面幾行代碼是在開始的時候所須要的this
[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)spa
這個框架的好處之一就是它的靈活性,若是你還想要你的日誌語句寫入到一個文件中,你能夠添加和配置fileLogger
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包上傳上去,生成二維碼,測試人員在手機上掃碼二維碼,就能夠直接安裝最新的測試版本了,好用的讓人想哭。
目前須要邀請碼註冊,我這裏有幾枚邀請碼,須要的私信我郵箱,或者本身去申請邀請碼。