1. 根據(jù)TAG和Log優(yōu)先級過濾
```
adb logcat [TAG:LEVEL ] [TAG:LEVEL ] ...
```
>例如:輸出TAG為 debug, 優(yōu)先級為 D以上的Log:
adb logcat debug:D
[TAG:LEVEL ] 不會(huì)影響其他標(biāo)簽的日志, 所以如果要屏蔽其他log請使用 *:S
adb logcat Debug:D *:S
優(yōu)先級,從低到高依次是:
V — 明細(xì) verbose(最低優(yōu)先級)
D — 調(diào)試 debug
I — 信息 info
W — 警告 warning
E — 錯(cuò)誤 error
F -? fatal
2. 采用grep過濾
例如:匹配行中的任意位置到的字符串
adb logcat | grep MyApp
adb logcat | grep -i MyApp? // 忽略大小寫
設(shè)置為僅匹配 TAG
adb logcat | grep "^..MyApp"
3.? 清空Log
adb logcat -c
logcat的原理
安卓日志存放在main緩沖區(qū)文件里;部分會(huì)存在其他緩存文件里。
logcat其實(shí)就是讀取緩沖區(qū)文件,實(shí)時(shí)的輸出文件信息。
因此,思路就是,在輸出文件信息的時(shí)候?qū)π畔⑦M(jìn)行正則表達(dá)式的過濾。
所以,針對logcat或者使用pidcat的通用語句如下:
adb logcat [option] [<filter-spec>] | grep '需要查詢的信息'
pidcat 包名| grep '需要查詢的信息'
例如:只顯示com.jingdong的日志信息,同時(shí)只能是包含'http'的信息
用pidcat寫命令如下:
pidcat com.jigndong | grep 'http'
用logcat寫命令如下:
adb logcat |? grep 'http'
logcat 常用命令
adb logcat -c 清除所有以前的日志
adb logcat -d 這個(gè)命令是在時(shí)間上倒過來用的 就是你先操作 然后敲這個(gè)命令 打出來的log就是你剛操作那段時(shí)間的log 而且自動(dòng)退出log模式
adb logcat -s XXX這個(gè)是設(shè)置過濾用的 比如你只想查看FirstDemo的日志 就替換最后的XXX
adn logcat -f /sdcard/test.txt 輸出日志到某個(gè)目錄文件
V-Verbose 級別最低,開發(fā)調(diào)試中的一些詳細(xì)信息,不常見
D-Debug 調(diào)試,調(diào)試信息,開發(fā)中經(jīng)常選擇輸出此種級別的日志,較常見
I—Info 信息,該等級日志顯示運(yùn)行狀態(tài)信息,可在產(chǎn)品出現(xiàn)問題時(shí)提供幫助,從該級別開始的日志通常包含完整意義的英語語句和調(diào)試信息,是最常見的日志級別。
W—Warning 警告,運(yùn)行出現(xiàn)異常即將發(fā)生錯(cuò)誤或表明已發(fā)生非致命性錯(cuò)誤,該級別日志通常顯示出執(zhí)行過程中的意外情況,例如將try-catch語句塊中的異常打印堆棧軌跡之后可輸出此種級別日志。
E—Error 錯(cuò)誤,已經(jīng)出現(xiàn)可影響運(yùn)行的錯(cuò)誤,比如應(yīng)用crash時(shí)輸出的日志。
F—Fatal 嚴(yán)重錯(cuò)誤,比error級別更高,目前只在android系統(tǒng)內(nèi)核發(fā)出的日志中看到此種級別。
S—Silent 寂靜,最高級別,沒有一條日志會(huì)屬于這個(gè)級別,僅僅作為關(guān)閉logcat輸出的過濾器參數(shù)
1、定位及分析崩潰問題
定位android應(yīng)用崩潰問題,主要在日志中搜索fatal關(guān)鍵字,搜索到fatal關(guān)鍵字后,查找上下文中輸入的信息是否是當(dāng)前測試app進(jìn)程的包名,如果是的話,可以定位次出崩潰時(shí)由當(dāng)前app引起,具體導(dǎo)致崩潰的原因需要具體再分析日志。如上圖所示,搜索到fatal關(guān)鍵字,并發(fā)現(xiàn)進(jìn)程名是測試app的進(jìn)程名,接下來分析導(dǎo)致崩潰的原因可以發(fā)現(xiàn)是因?yàn)閱?dòng)一個(gè)activity失敗導(dǎo)致的崩潰,分析到這里可以將日志提供給開發(fā)來解決此問題。
2、定位及分析無響應(yīng)問題
定位Android應(yīng)用發(fā)生無響應(yīng)的問題,同理,主要在日志中搜索anr關(guān)鍵字。如果查找到anr關(guān)鍵字的話,需要在獲取額外的trace文件來輔助分析問題。
可通過命令行adbpull /data/anr/trace.txt 來獲取trace文件。具體分析虛擬機(jī)信息,搜索Dalvik Thread關(guān)鍵詞,快速定位到本應(yīng)用程序的虛擬機(jī)信息日志。