Android shell命令行中過濾adb logcat輸出的幾種方法
我們在Android開發(fā)中總能看到程序的log日志內(nèi)容充滿了屏幕,而真正對(duì)開發(fā)者有意義的信息被淹沒在洪流之中,讓開發(fā)者無所適從,嚴(yán)重影響開發(fā)效率。本文就具體介紹幾種在shell命令行中過濾adb logcat輸出的方法。
1、只顯示需要的輸出(白名單)
最方便的當(dāng)然是通過管道使用 grep 過濾了,這樣可以使用 grep 強(qiáng)大的正則表達(dá)式匹配。簡單的匹配一行當(dāng)中的某個(gè)字符串,例如 MyApp:
- adb logcat | grep MyApp
- adb logcat | grep -i myapp #忽略大小寫。
- adb logcat | grep --color=auto -i myapp #設(shè)置匹配字符串顏色。更多設(shè)置請(qǐng)查看 grep 幫助。
進(jìn)階一點(diǎn)可以使用 grep 的正則表達(dá)式匹配。例如上一個(gè)例子會(huì)匹配一行中任意位置的 MyApp,可以設(shè)置為僅匹配 tag。默認(rèn)的 log 輸出如下,如果修改過輸出格式相應(yīng)的表達(dá)式也要修改。
I/CacheService( 665): Preparing DiskCache for all thumbnails.
可以看出 tag 是一行開頭的第三個(gè)字符開始,根據(jù)這點(diǎn)寫出表達(dá)式:
adb logcat | grep "^..MyApp"
根據(jù)這個(gè)格式也可以設(shè)置只顯示某個(gè)優(yōu)先級(jí)的 log,再匹配行首第一個(gè)字符即可。例如僅顯示 Error 級(jí)別 tag 為 MyApp 的輸出:
adb logcat | grep "^E.MyApp"
當(dāng)然也可以匹配多個(gè),使用 | 分割多個(gè)匹配表達(dá)式,要加轉(zhuǎn)義符。例如要匹配 tag 為 MyApp 和 MyActivity 的輸出:
adb logcat | grep "^..MyApp\|^..MyActivity"
adb logcat | grep -E "^..MyApp|^..MyActivity" #使用 egrep 無須轉(zhuǎn)義符
2、過濾不需要的輸出(黑名單)
還是使用 grep,用法也跟上面的一樣,加一個(gè) -v 即可。例如要過濾 tag 為 MyApp 和 MyActivity 的輸出:
adb logcat | grep -v "^..MyApp\|^..MyActivity"
adb logcat | grep -vE "^..MyApp|^..MyActivity" #使用 egrep 無須轉(zhuǎn)義符
3、顯示同一個(gè)進(jìn)程的所有輸出
有時(shí)一個(gè)程序里面的 tag 有多個(gè),需要輸出該程序(同一個(gè) PID)的所有 tag;僅使用 tag 過濾有時(shí)也會(huì)漏掉一些錯(cuò)誤信息,而一般錯(cuò)誤信息也是和程序同一個(gè) PID。還是通過 grep 實(shí)現(xiàn),思路是先根據(jù)包名找到 pid 號(hào),然后匹配 pid。寫成 shell 腳本如下,參數(shù)是程序的 java 包名(如 com.android.media)。
#!/bin/bash
packageName=$1
pid=`adb shell ps | grep $packageName | awk ‘{print $2}'`
adb logcat | grep –color=auto $pid
4、從當(dāng)前開始顯示
logcat 有緩存,如果僅需要查看當(dāng)前開始的 log,需要清空之前的。
adb logcat -c && adb logcat
5、過濾 log 文件
有時(shí)需要分析 log 文件,過濾 log 文件還是使用 grep。例如 log 文件為 myapp.log,要匹配 tag 為 MyApp 和 MyActivity 的輸出,然后輸出到 newmyapp.log:
cat myapp.log | grep "^..MyApp\|^..MyActivity" > newmyapp.log
Windows 下推薦使用Notepad++,一個(gè)免費(fèi)強(qiáng)大的記事本,支持正則表達(dá)式查找替換??梢愿吡溜@示匹配內(nèi)容,也可以刪除不需要的內(nèi)容。
以上的技巧主要用到了 grep,其實(shí) logcat 本身也有過濾功能,可以根據(jù) tag、優(yōu)先級(jí)過濾 log,具體請(qǐng)參考 Android 官方文檔Reading and Writing Logs。如果喜歡使用圖形界面,請(qǐng)參考Using DDMS,DDMS 里面的 logcat 也可以同樣過濾。
以上就是Android shell命令行中過濾adb logcat輸出的幾種方法的資料整理,后續(xù)繼續(xù)補(bǔ)充相關(guān)資料,謝謝大家對(duì)本站的支持!
- 在Android界面上顯示和獲取Logcat日志輸出的方法
- Android adb logcat 命令查看日志詳細(xì)介紹
- Android開發(fā)之在程序中時(shí)時(shí)獲取logcat日志信息的方法(附demo源碼下載)
- Android Studio使用小技巧:自定義Logcat
- logcat命令使用方法和查看android系統(tǒng)日志緩沖區(qū)內(nèi)容的方法
- android真機(jī)調(diào)試時(shí)無法顯示logcat信息的解決方法介紹
- Android開發(fā)筆記之:一分鐘學(xué)會(huì)使用Logcat調(diào)試程序的詳解
- 如何通過Android Logcat插件分析firebase崩潰問題
相關(guān)文章
Android手機(jī)注冊登錄時(shí)獲取驗(yàn)證碼之后倒計(jì)時(shí)功能(知識(shí)點(diǎn)總結(jié))
這篇文章主要介紹了Android手機(jī)注冊登錄時(shí)獲取驗(yàn)證碼之后倒計(jì)時(shí)(知識(shí)點(diǎn)總結(jié))功能,代碼簡單易懂,非常不錯(cuò),具有參考借鑒價(jià)值,需要的的朋友參考下吧2017-01-01
跨平臺(tái)移動(dòng)WEB應(yīng)用開發(fā)框架iMAG入門教程
這篇文章主要介紹了跨平臺(tái)移動(dòng)WEB應(yīng)用開發(fā)框架iMAG入門教程,iMAG最大的特點(diǎn)是生成各移動(dòng)平臺(tái)的原生代碼,需要的朋友可以參考下2014-07-07
Android studio gradle環(huán)境變量配置教程
這篇文章主要為大家詳細(xì)介紹了Android studio gradle環(huán)境變量配置教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05
Android巧用ActionBar實(shí)現(xiàn)tab導(dǎo)航效果
這篇文章主要為大家詳細(xì)介紹了Android巧用ActionBar實(shí)現(xiàn)tab導(dǎo)航效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-05-05
Android攔截并獲取WebView內(nèi)部POST請(qǐng)求參數(shù)的實(shí)現(xiàn)方法
這篇文章主要介紹了Android攔截并獲取WebView內(nèi)部POST請(qǐng)求參數(shù) 的實(shí)現(xiàn)方法,本文通過兩種方案給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-04-04
Android實(shí)現(xiàn)讀取NFC卡的編號(hào)
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)讀取NFC卡的編號(hào),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09
Android?動(dòng)態(tài)加載?so實(shí)現(xiàn)示例詳解
這篇文章主要為大家介紹了Android?動(dòng)態(tài)加載?so實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09
Android自定義view實(shí)現(xiàn)圓形waveview
這篇文章主要為大家詳細(xì)介紹了Android自定義view實(shí)現(xiàn)圓形waveview,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-01-01
Android BottomNavigationBar底部導(dǎo)航控制器使用方法詳解
這篇文章主要為大家詳細(xì)介紹了Android BottomNavigationBar底部導(dǎo)航控制器使用方法,感興趣的小伙伴們可以參考一下2016-03-03

