可能大數(shù)人看到這個標(biāo)題覺得DEBUG時在Xcode里就能看到App運(yùn)行時的打印在控制臺里的日志,這還需要專門寫篇文章介紹下嗎?其實(shí)不然,有些場景下我們還是需要實(shí)時查看App運(yùn)行時的日志的,比如測試人員拿著測試機(jī)發(fā)現(xiàn)問題了過來找你,這時候要看運(yùn)行時日志,又不能重新DEBUG安裝版本,怎么辦?再比如,收到并點(diǎn)擊推送的通知后啟動App,這時候要查看我們打印的日志,怎么辦?還有,弄過VoIP推送同學(xué)的都知道,這個推送可以直接啟動我們的App,如果要觀察啟動過程中的日志,這該怎么辦?總不能只能連著Xcode運(yùn)行時,我們才能看到日志吧。有同學(xué)可能會說,把日志寫入文件,啟動完成后,再把文件拷貝出來看不就完了,好了,這篇文章你一定要認(rèn)真看完。
這里我們說的日志是輸出到控制臺的日志,就是我們常用的NSLog輸出的日志。其實(shí)大部分App會集成日志模塊,比如CocoaLumberjack,還有以前筆者學(xué)習(xí)Runloop時也造過這樣的輪子SSLogger。利用第三方日志模塊查看日志不在本文討論范圍內(nèi),本文只討論如何實(shí)時查看輸出在console控制臺的日志。
大致有以前幾種方式查看日志,一種是連著Xcode調(diào)試時,可以直接在Xcode下面的控制臺輸出面板上看到我們App的日志。如圖:
還一種也是Xcode,通過Window->Devices打開devices界面,選擇我們的手機(jī),也能看到手機(jī)中運(yùn)行的進(jìn)程輸出的日志。如圖:
上面這兩種方式大部分iOS開發(fā)應(yīng)該都知道,不知道的就該檢討下了。
本文重點(diǎn)介紹另外兩種查看運(yùn)行時日志的方式: libimobiledevice 和 Console.app(控制臺應(yīng)用)
libimobiledevice 是一系列工具集,有很多實(shí)用的工具,截屏,安裝ipa文件等等。我們要介紹的是idevicesyslog這個工具,這個工具可以把手機(jī)中的日志輸出到我們指定的文件里。
如何安裝libimobiledevice
安裝libimobiledevice很簡單,在命令行輸入:
brew instll libimobiledevice --HEAD
注意,需要加上 –HEAD 選項(xiàng),如果不加,安裝是老版本,不支持iOS10的手機(jī),所以安裝時,需要加上 –HEAD 選項(xiàng), 如圖:
如果電腦上沒有brew,請看這里:brew安裝傳送門
如何使用idevicesyslog
很簡單,在命令行輸入:
idevicesyslog
就可以在屏幕上看見手機(jī)上所有的日志了。
如何查看我們想要的日志
1)將設(shè)備日志重定向到文件
idevicesyslog >> iphone.log &
該命令是將日志導(dǎo)入到iphone.log這個文件,并且是在后臺執(zhí)行。
2)用tail -f和grep查看log
tail -f iphone.logtail -f iphone.log | grep 'QQ’ # 查看包含QQ的行
如圖:
在用過各種辦法查看App日志后,還是覺得蘋果系統(tǒng)自帶的工具用起來最方便,不用安裝,不用命令行,傻瓜式操作,非常方便。但是還有好多同學(xué)不知道怎么用,這里簡單的給大家介紹下。
連上手機(jī),在LaunchPad其他文件中打開控制臺應(yīng)用,或者搜索Console.app打開控制臺應(yīng)用,可以看到左側(cè)一欄中有我們的手機(jī)設(shè)備,選擇就可以,如圖
右側(cè)輸出的日志不僅有我們自己的App還有其他進(jìn)程的日志,怎么過濾?非常簡單,選中一條我們的日志,在進(jìn)程名字上右鍵,選擇顯示進(jìn)程名,然后就只會顯示我們App的日志。如果顯示的列名中沒有進(jìn)程名,我們可以在其他列名上右鍵,在彈出的菜單中勾選上進(jìn)程就可以了。如圖顯示QQ打印出的日志:
日志還是有點(diǎn)多,看不清,怎么辦,在右上方輸入自己想要過濾出的日志,然后就會只顯示你想要的,如圖顯示QQ打印出的日志中所有帶有“***”的行
是不是很簡單方便
其實(shí)這個控制臺應(yīng)用功能還是很多的,本文只是介紹下簡單用法,大家快去試試其他功能吧。
本文介紹的兩種實(shí)時查看日志的方法能讓我們在一些不能連上Xcode調(diào)試的場景下查看日志,對于定位解決問題很有幫助。idevicesyslog 工具使用方法更靈活,可以用grep查找更符合自己想要的日志;控制臺應(yīng)用查看日志更方便一點(diǎn)。