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

獲取App的全量日志器钟,能更好的獲取App內(nèi)各種活動(dòng)信息斑司,在查找問題原因時(shí),能更好的看到App活動(dòng)前后的信息姻政,方便我們定位問題原因呆抑。

目錄

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


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

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

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

ASL 會(huì)提供接口去查找所有的日志摩桶,通過 ?CocoaLumberjack? 桥状、簡(jiǎn)書上介紹使用?這個(gè)第三方日志庫里的 DDASLLogCapture 這個(gè)類,我們可以找到實(shí)時(shí)捕獲 NSLog 的方法硝清。DDASLLogCapture 會(huì)在 start 方法里開啟一個(gè)異步全局隊(duì)列去捕獲 ASL 存儲(chǔ)的日志辅斟。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 是個(gè)全局的單例類酵幕,會(huì)保存 DDLogger 協(xié)議的 logger;DDLogFormatter 用來格式化日志的格式缓苛;DDLogMessage 是對(duì)日志消息的一個(gè)封裝芳撒;DDLogger 協(xié)議是由 DDAbstractLogger 實(shí)現(xiàn)的。logger 都是繼承于 DDAbstractLogger:

日志輸出到控制臺(tái)是通過 DDTTYLogger 實(shí)現(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)實(shí)讶凉。

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

? ? ? ? ?App在啟動(dòng)、從后臺(tái)進(jìn)入前臺(tái) 一瞬間山孔,開啟一個(gè)異步接口懂讯,請(qǐng)求接口 獲取 拉取日志的相關(guān)信息。然后我們根據(jù)本地的日志信息台颠,遍歷獲取我們指定的日志范圍褐望,進(jìn)行 上傳日志到我們的服務(wù)器上面。

? ? ?2> 建立長鏈接串前,收到 拉取日志的通知瘫里,進(jìn)行 本地日志的拉取。這種方案不適合大都的App荡碾,因?yàn)槲覀儾恍枰L鏈接谨读。當(dāng)有即時(shí)通訊的App的時(shí)候我們可以使用該方案。


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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市帖旨,隨后出現(xiàn)的幾起案子箕昭,更是在濱河造成了極大的恐慌,老刑警劉巖解阅,帶你破解...
    沈念sama閱讀 217,185評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件落竹,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡瓮钥,警方通過查閱死者的電腦和手機(jī)筋量,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門烹吵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人桨武,你說我怎么就攤上這事肋拔。” “怎么了呀酸?”我有些...
    開封第一講書人閱讀 163,524評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵凉蜂,是天一觀的道長。 經(jīng)常有香客問我性誉,道長窿吩,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,339評(píng)論 1 293
  • 正文 為了忘掉前任错览,我火速辦了婚禮纫雁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘倾哺。我一直安慰自己轧邪,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,387評(píng)論 6 391
  • 文/花漫 我一把揭開白布羞海。 她就那樣靜靜地躺著忌愚,像睡著了一般。 火紅的嫁衣襯著肌膚如雪却邓。 梳的紋絲不亂的頭發(fā)上硕糊,一...
    開封第一講書人閱讀 51,287評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音腊徙,去河邊找鬼简十。 笑死,一個(gè)胖子當(dāng)著我的面吹牛昧穿,可吹牛的內(nèi)容都是我干的勺远。 我是一名探鬼主播,決...
    沈念sama閱讀 40,130評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼时鸵,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了厅瞎?” 一聲冷哼從身側(cè)響起饰潜,我...
    開封第一講書人閱讀 38,985評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎和簸,沒想到半個(gè)月后彭雾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,420評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡锁保,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,617評(píng)論 3 334
  • 正文 我和宋清朗相戀三年薯酝,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了半沽。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,779評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡吴菠,死狀恐怖者填,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情做葵,我是刑警寧澤占哟,帶...
    沈念sama閱讀 35,477評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站酿矢,受9級(jí)特大地震影響榨乎,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜瘫筐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,088評(píng)論 3 328
  • 文/蒙蒙 一蜜暑、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧策肝,春花似錦史煎、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至酝枢,卻和暖如春恬偷,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背帘睦。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評(píng)論 1 269
  • 我被黑心中介騙來泰國打工袍患, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人竣付。 一個(gè)月前我還...
    沈念sama閱讀 47,876評(píng)論 2 370
  • 正文 我出身青樓诡延,卻偏偏與公主長得像,于是被迫代替她去往敵國和親古胆。 傳聞我的和親對(duì)象是個(gè)殘疾皇子肆良,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,700評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 本文是< > 第十五篇學(xué)習(xí)筆記. iOS10之前獲取 NSLog 的日志 NSLog 其實(shí)就是一個(gè) C 函數(shù),函數(shù)...
    forping閱讀 1,231評(píng)論 0 0
  • 引入 在iOS開發(fā)中逸绎,日志系統(tǒng)是很重要的一個(gè)部分惹恃,尤其是在修復(fù)代碼中的bug,通常會(huì)用NSLog來將這些信息打印到...
    AirChen閱讀 4,222評(píng)論 0 8
  • 本文的原始發(fā)布地址在我的個(gè)人博客 https://yohunl.com/iosri-zhi-huo-qu-he-s...
    yohunl閱讀 5,766評(píng)論 2 42
  • 我們?cè)陂_發(fā)中經(jīng)常需要打日志棺牧,iOS提供的NSLog只能在Xcode里面查看巫糙,這種方式有如下限制: 1、只有處于De...
    52xpz閱讀 8,072評(píng)論 0 22
  • 會(huì)的不難颊乘,難的不會(huì)参淹,這大概就是溫習(xí)舊知識(shí)和學(xué)習(xí)新知識(shí)時(shí)的感受了吧醉锄。 這幾天百度Debug日志管理,利用CocoaL...
    plantseeds閱讀 12,881評(píng)論 9 62