2011-05-09 16 views
1

私はいくつかのログをアンドロイドログシステムに出力できるアプリケーションを持っています。私は監視したいキーワードをいくつか持っています:android adb logcatを監視してgrepを実行する方法は?

"adb logcat"出力は新しい行があれば監視しますキーワードが含まれていれば、新しい行を出力します。

これはadb logcatのようなものです。 grep "コマンド"ですが、adb logcatがそこでブロックされるので、私のgrepは入力を見ることができません。シンプルなシェルスクリプトを使って実行できるのですか?

+0

adb logcat | grep "Web Console" #worksforme –

答えて

4

フィルタリングログ出力のセクションでhttp://developer.android.com/guide/developing/tools/adb.htmlを見ると、これはadbのネイティブフィルタ機能について説明しています。これはおそらくあなたのために働くでしょう。あなたはあなたのログステートメント(本質的にはbashに送られたもの)に特定のタグを指定して、それらのタグをフィルタリングすることができます。たとえば:

android.util.Log.v("filter1","<this is my log statement>"); 

はコードになり、そしてあなたは、その出力をフィルタリングする

adb logcat filter1:V 

にしてください。

EDIT:いつでもファイルにダンプしてからbashを実行することができます。

+0

ありがとうございますが、それほど理想的ではないようです。ファイルにダンプするたびにログをクリアすることはできますか?それ以外の場合、同じ行が複数回処理される可能性があります。 –

+4

'adb logcat -c'を実行すると、実行間のログインをフラッシュできます。また、 'adb logcat -d'を実行すると、ログを画面にダンプして直ちに終了することができます。これは' bash'に送る必要があります。 – Femi

+2

右。今日、私はオプションの注文について1つの結論を見つけました。つまり、このcmd: 'adb logcat -s -v time MYTAG -d'を使用すると、ダンプして終了しません。正しい順序は 'adb logcat -d -s -v time MYTAG'です。 – HackNone

0

あなたが連続ループで実行したい場合は、uはこの試すことができ、次のよう

log_1=$(adb shell dumpsys meminfo com.azoi.azoitv | grep Views:) 
echo $log_1 

に試すことができます。特定のプロセスのためにlogcatを表示するには

while : 
do 
    log_1=$(adb shell dumpsys meminfo com.azoi.azoitv | grep Views:) 
    echo $log_1 
done 
0

を:

adb logcat | grep <process_id> 

特定のプロセスのlogcatをタグ名で表示するには

adb logcat | grep <process_id> | grep -s "TAG NAME" 

|  acts as a seperator for combining different queries. 
関連する問題