Android shellコマンドラインにおいて、adb logcatをフィルタして出力するいくつかの方法があります。


私たちはAndroidの開発において、プログラムのロゴログの内容が画面いっぱいになりました。本当に開発者にとって意義のある情報が洪水の中に埋没しました。ここでは、shellコマンドラインでadb locatをフィルタして出力する方法をいくつか紹介します。
       1、必要な出力のみを表示する(ホワイトリスト)
       最も便利なのはもちろんパイプラインによるgrepフィルタリングであり,これによりgrepの強い正規表現整合が利用できる。単純に行の中のある文字列にマッチします。例えば、MyApp:
  •        adb logcat grep MyApp
  •        adb logcat_grep-i myapp_iは、大文字と小文字を無視する。
  •        adb logcat grep--カラー=aut-i  myapp鎚は文字列の色にマッチするように設定します。詳細設定はgrepヘルプを確認してください。
  •       ステップポイントは、grepの正規表現整合を使用することができます。例えば、前の例は、行の任意の位置のMyAppと一致し、マッチングのみに設定することができる。デフォルトのロゴ出力は以下のようになります。出力フォーマットを変更した場合の表現も変更されます。
           I/CacheService(  665):Preparing Disc Cache for all thumbnail.
           行の最初の3番目の文字が表示されます。これに基づいて式を書きます。
           adb logcat grep"^.MyApp"
           このフォーマットによっては、優先度のあるロゴのみを表示するように設定し、行頭の最初の文字にマッチさせることもできます。例えば、Errorレベルの出力のみを表示します。
           adb logcat grep「^E.MyApp」
           もちろん複数のマッチ式にもマッチします。複数のマッチ式を分割し、変換子を追加します。例えばMyAppとMyActivityの出力にマッチします。
           adb logcat grep'^.MyApp\𞓜^.MyActivity'
           adb logcat|grep-E'^.MyApp𞓜^.MyActivity"  #egrepを使うと、変換が不要です。
           2、フィルタ不要出力(ブラックリスト)
           やはりgrepを使って、使い方も上と同じです。例えば、MyAppとMyActivityの出力をフィルタする必要があります。
           adb logcat|grep-v'^.MyApp\124;^. MyActivity'
           adb logcat grep-vE"^.MyApp𞓜^.MyActivity"  #egrepを使うと、変換が不要です。
           3、同じプロセスのすべての出力を表示する
           時には一つのプログラムの中の「複数あります。このプログラム(同じPID)のすべてを出力しなければなりません。使用するだけでエラーメッセージが漏れたり、エラー情報もプログラムと同じPIDです。それともgrepによって実現されますか?考えは先にパッケージ名によってpid番号を見つけてからpidに合わせます。shellスクリプトを書くと、パラメータはプログラムのjavaパッケージ名です。
    
      #!/bin/bash
      packageName=$1
      pid=`adb shell ps | grep $packageName | awk ‘{print $2}'`
      adb logcat | grep Ccolor=auto $pid
    
           4、現在から表示
           logcatにはキャッシュがあります。現在開始されているloglを確認するだけで、前のものをクリアする必要があります。
           adb logcat-c&adb logcat
           5、ロゴファイルをフィルタする
           ロゴファイルの解析が必要な場合もありますが、ログファイルをフィルタするか、それともgrepを使いますか?例えば、ロゴファイルはmypp.logであり、MyAppとMyActivityの出力に合うようにして、newmypp.logに出力します。
           cat mypp.log grep'^.MyApp\|^.MyActivity'>newmyap.logs
           WindowsではNotepad++を使って、無料で強力なメモ帳を使って、正規表現の検索置換をサポートします。マッチした内容をハイライト表示したり、不要な内容を削除したりできます。
           以上の技巧は主にgrepを使って、実はlocat自身も濾過機能があって、ロゴを優先的に濾過することができて、具体的にはAndroid公式文書Reading and Writing Logsを参照してください。グラフィックインターフェースが好きなら、Using DDMSを参照してください。DDMS内のロゴカードも同様にフィルタリングできます。
    以上はAndroid shell命令行の中でADb locatの出力のいくつかの方法の資料を濾過して整理して、引き続き関連している資料を補充して、ありがとうございます。