国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android shell命令行中過濾adb logcat輸出的方法

2019-12-12 05:35:52
字體:
來源:轉載
供稿:網友

        我們在Android開發中總能看到程序的log日志內容充滿了屏幕,而真正對開發者有意義的信息被淹沒在洪流之中,讓開發者無所適從,嚴重影響開發效率。本文就具體介紹幾種在shell命令行中過濾adb logcat輸出的方法。

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

       最方便的當然是通過管道使用 grep 過濾了,這樣可以使用 grep 強大的正則表達式匹配。簡單的匹配一行當中的某個字符串,例如 MyApp:

       adb logcat | grep MyApp
       adb logcat | grep -i myapp #忽略大小寫。
       adb logcat | grep --color=auto -i  myapp #設置匹配字符串顏色。更多設置請查看 grep 幫助。

       進階一點可以使用 grep 的正則表達式匹配。例如上一個例子會匹配一行中任意位置的 MyApp,可以設置為僅匹配 tag。默認的 log 輸出如下,如果修改過輸出格式相應的表達式也要修改。

       I/CacheService(  665): Preparing DiskCache for all thumbnails.

       可以看出 tag 是一行開頭的第三個字符開始,根據這點寫出表達式:

       adb logcat | grep "^..MyApp"

       根據這個格式也可以設置只顯示某個優先級的 log,再匹配行首第一個字符即可。例如僅顯示 Error 級別 tag 為 MyApp 的輸出:

       adb logcat | grep "^E.MyApp"

       當然也可以匹配多個,使用 | 分割多個匹配表達式,要加轉義符。例如要匹配 tag 為 MyApp 和 MyActivity 的輸出:

       adb logcat | grep "^..MyApp/|^..MyActivity"
       adb logcat | grep -E "^..MyApp|^..MyActivity"  #使用 egrep 無須轉義符

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

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

       adb logcat | grep -v "^..MyApp/|^..MyActivity"
       adb logcat | grep -vE "^..MyApp|^..MyActivity"  #使用 egrep 無須轉義符

       3、顯示同一個進程的所有輸出

       有時一個程序里面的 tag 有多個,需要輸出該程序(同一個 PID)的所有 tag;僅使用 tag 過濾有時也會漏掉一些錯誤信息,而一般錯誤信息也是和程序同一個 PID。還是通過 grep 實現,思路是先根據包名找到 pid 號,然后匹配 pid。寫成 shell 腳本如下,參數是程序的 java 包名(如 com.android.media)。

       #!/bin/bash
       packageName=$1
       pid=`adb shell ps | grep $packageName | awk ‘{print $2}'`
       adb logcat | grep

主站蜘蛛池模板: 江阴市| 林西县| 双鸭山市| 汪清县| 吉水县| 双流县| 雷州市| 陆良县| 梅州市| 措美县| 大足县| 娱乐| 濉溪县| 城口县| 兴文县| 东乡族自治县| 来凤县| 延安市| 合作市| 清镇市| 英德市| 华容县| 平潭县| 武安市| 平南县| 邹平县| 交口县| 西吉县| 进贤县| 呼玛县| 老河口市| 城步| 石泉县| 河津市| 逊克县| 和林格尔县| 开封市| 丹凤县| 额济纳旗| 师宗县| 二手房|