iOS 日志監(jiān)控:獲取 App 中的全量日志

獲取App的全量日志,能更好的獲取App內(nèi)各種活動信息,在查找問題原因時,能更好的看到App活動前后的信息,方便我們定位問題原因。

目錄

1、獲取系統(tǒng)自帶 NSLog 的日志


1、獲取系統(tǒng)自帶 NSLog 的日志

1、NSLog 其實就是一個 C 函數(shù),函數(shù)聲明是:void NSLog(NSString *format, ...);

它的作用是,輸出信息到標(biāo)準(zhǔn)的 Error 控制臺和系統(tǒng)日志(syslog)中。在內(nèi)部實現(xiàn)上,它其實使用的是 ASL(Apple System Logger,是蘋果公司自己實現(xiàn)的一套輸出日志的接口)的 API,將日志消息直接存儲在磁盤上。那么,我們?nèi)绾尾拍塬@取到通過 ASL 存放在系統(tǒng)日志中的日志呢?

ASL 會提供接口去查找所有的日志,通過 ?CocoaLumberjack? 、簡書上介紹使用?這個第三方日志庫里的 DDASLLogCapture 這個類,我們可以找到實時捕獲 NSLog 的方法。DDASLLogCapture 會在 start 方法里開啟一個異步全局隊列去捕獲 ASL 存儲的日志。start 方法的代碼如下:

+ (void)start { ... dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void) { [self captureAslLogs]; }); }

2、獲取 CocoaLumberjack 日志:

CocoaLumberjack 主要由 DDLog、DDLoger、DDLogFormatter 和 DDLogMessage 四部分組成,其整體架構(gòu)如下圖所示:

在這其中,DDLog 是個全局的單例類,會保存 DDLogger 協(xié)議的 logger;DDLogFormatter 用來格式化日志的格式;DDLogMessage 是對日志消息的一個封裝;DDLogger 協(xié)議是由 DDAbstractLogger 實現(xiàn)的。logger 都是繼承于 DDAbstractLogger:

日志輸出到控制臺是通過 DDTTYLogger 實現(xiàn)的;

DDASLLogger 就是用來捕獲 NSLog 記錄到 ASL 數(shù)據(jù)庫的日志;

DDAbstractDatabaseLogger 是數(shù)據(jù)庫操作的抽象接口;

DDFileLogger 是用來保存日志到文件的,還提供了返回 CocoaLumberjack 日志保存文件路徑的方法,使用方法如下:

DDFileLogger *fileLogger = [[DDFileLogger alloc] init]; NSString *logDirectory = [fileLogger.logFileManager logsDirectory];

3、拿到Log日志文件,我們可以進(jìn)行上傳到我們的服務(wù)器系統(tǒng)。但是這么多日志我們都上傳服務(wù)器可能不太方便現(xiàn)實。

? ? ? 1> 后臺根據(jù)指定時間 抓取用戶手機(jī)本地日志:

? ? ? ? ?App在啟動、從后臺進(jìn)入前臺 一瞬間,開啟一個異步接口,請求接口 獲取 拉取日志的相關(guān)信息。然后我們根據(jù)本地的日志信息,遍歷獲取我們指定的日志范圍,進(jìn)行 上傳日志到我們的服務(wù)器上面。

? ? ?2> 建立長鏈接,收到 拉取日志的通知,進(jìn)行 本地日志的拉取。這種方案不適合大都的App,因為我們不需要長鏈接。當(dāng)有即時通訊的App的時候我們可以使用該方案。


介紹了 NSLog 和 CocoaLumberjack 日志的獲取方法。這兩種打日志的方式基本覆蓋了大部分場景,你在使用其他日志庫時,只要找到日志存儲的目錄,就可以進(jìn)行日志的收集合并工作了。收集全量日志,可以提高分析和解決問題的效率,節(jié)省下來的時間我們可以去做更有意義的事情。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容