使用adb logcat命令,執行后如下:
輸出的日志是一大坨,而且還不停的輸出,看上去眼花繚亂。主要是因為沒做篩選。
以上輸出的信息包含了:日期、時間、PID、TID、日志級別、標簽、日志內容等。
PID:可以看成app運行時,在系統中的唯一的一個標識。
UID:PID可以對應多個TID,主要是由於支持多線程。每個線程對應一個TID。
日志級別:Android Log類源碼中,日志有6個級別。常用的5個分別是 V(Verbose 明細,最低級別)、D(Debug 調試)、I(Info 信息)、W(Warn 警告)、E(Error 錯誤)。
標簽:開發中,標記日志的一個屬性。如,使用類名,表示是哪個類里輸出的日志。
篩選日志
可以根據PID(同一時刻包名和PID是一一對應關系)、TID、日志級別、日志標簽、日志內容做篩選。考慮到篇幅關系暫且只介紹使用PID、日志級別、標簽篩選日志。
根據日志級別篩選
命令模板:adb logcat 標簽:日志級別 (*:s)。
篩選Warn級別以上的日志(包含Error)命令:adb logcat *:W
表示不匹配標簽。
根據標簽篩選
篩選System的日志命令:adb logcat System:* *:s
第一個星號表示不匹配日志級別, *:S用於設置所有標記的日志優先級為S,這樣可以確保僅輸出符合條件的日志。
根據PID(應用包名)篩選
由於應用每次啟動后,系統分配的PID都不一樣。因此,需要根據包名或UID篩選日志時,需要先啟動應用,再使用命令adb shell dumpsys meminfo 包名
查看到UID信息,最后根據PID篩選日志。
根據PID 18270(圖中所示)篩選日志 ,命令adb logcat | grep 18270
:
圖中可以看出,PID 18270 是唯一的,右邊的TID可以有多個值。橫向匹配的18270 是沒有添加*:s
導致的。
綜合篩選
保存日志
保存到手機
命令模板:adb logcat -f 手機上文件目錄 標簽:日志級別 *:s | grep PID
如:adb logcat -f /sdcard/Download/log.txt JPush:D *:s | grep 18270
保存到電腦
命令模板:adb logcat > 電腦上文件目錄 標簽:日志級別 *:s | grep PID
如:adb logcat > ~/Desktop/log.txt JPush:D *:s | grep 18270
轉載:https://blog.csdn.net/flueky/article/details/53645361