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パッケージ名です。
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の出力のいくつかの方法の資料を濾過して整理して、引き続き関連している資料を補充して、ありがとうございます。
1、必要な出力のみを表示する(ホワイトリスト)
最も便利なのはもちろんパイプラインによる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の出力のいくつかの方法の資料を濾過して整理して、引き続き関連している資料を補充して、ありがとうございます。