淺談app運行日志


使用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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM