日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

几种在shell命令行中过滤adb logcat输出的方法

發(fā)布時(shí)間:2025/3/8 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 几种在shell命令行中过滤adb logcat输出的方法 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

幾種在shell命令行中過(guò)濾adb logcat輸出的方法

?????? 我們?cè)贏ndroid開發(fā)中總能看到程序的log日志內(nèi)容充滿了屏幕,而真正對(duì)開發(fā)者有意義的信息被淹沒(méi)在洪流之中,讓開發(fā)者無(wú)所適從,嚴(yán)重影響開發(fā)效率。本文就具體介紹幾種在shell命令行中過(guò)濾adb logcat輸出的方法。

?

注:windows下命令 ?? adb logcat | find “myapp”

?

?????? 1、只顯示需要的輸出(白名單)

?????? 最方便的當(dāng)然是通過(guò)管道使用 grep 過(guò)濾了,這樣可以使用 grep 強(qiáng)大的正則表達(dá)式匹配。簡(jiǎn)單的匹配一行當(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 輸出如下,如果修改過(guò)輸出格式相應(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 無(wú)須轉(zhuǎn)義符

?????? 2、過(guò)濾不需要的輸出(黑名單)

?????? 還是使用 grep,用法也跟上面的一樣,加一個(gè) -v 即可。例如要過(guò)濾 tag 為 MyApp 和 MyActivity 的輸出:

?????? adb logcat | grep -v "^..MyApp\|^..MyActivity"
?????? adb logcat | grep -vE "^..MyApp|^..MyActivity"? #使用 egrep 無(wú)須轉(zhuǎn)義符

?????? 3、顯示同一個(gè)進(jìn)程的所有輸出

?????? 有時(shí)一個(gè)程序里面的 tag 有多個(gè),需要輸出該程序(同一個(gè) PID)的所有 tag;僅使用 tag 過(guò)濾有時(shí)也會(huì)漏掉一些錯(cuò)誤信息,而一般錯(cuò)誤信息也是和程序同一個(gè) PID。還是通過(guò) 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、過(guò)濾 log 文件

?????? 有時(shí)需要分析 log 文件,過(guò)濾 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 本身也有過(guò)濾功能,可以根據(jù) tag、優(yōu)先級(jí)過(guò)濾 log,具體請(qǐng)參考 Android 官方文檔Reading and Writing Logs。如果喜歡使用圖形界面,請(qǐng)參考Using DDMS,DDMS 里面的 logcat 也可以同樣過(guò)濾。

轉(zhuǎn)載于:https://www.cnblogs.com/zhengah/p/4565624.html

總結(jié)

以上是生活随笔為你收集整理的几种在shell命令行中过滤adb logcat输出的方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。