2011-05-09 106 views
1

我有一个可以打印一些登录到Android的日志系统中的应用程序,它有一些关键词,我想监视,我想要实现的是:如何监视android adb logcat并做一个grep?

监视器“亚行logcat”输出,如果有一个新行包含关键字,打印出新行。

这就像adb logcat | grep“命令”,但正如你所知,adb logcat将在那里阻止,所以我的grep看不到任何输入。它使用简单的shell脚本可行吗?

+0

adb logcat | grep“Web Console”#worksforme – 2012-02-19 02:16:35

回答

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 

过滤该输出。

编辑:你总是可以用它来转储到一个文件,然后运行bash就可以了。

+0

谢谢,但看起来不够理想。每次我倾倒到文件时,我可以清除日志吗?否则同一行可能会被多次处理... – 2011-05-09 07:34:00

+4

您可以运行'adb logcat -c'来刷新运行之间的日志。此外,您可以运行'adb logcat -d'将日志转储到屏幕并立即退出,这可能是您需要将它提供到'bash'中。 – Femi 2011-05-09 07:50:16

+2

对。今天我发现了一个关于期权定单的结论。也就是说,如果我使用这个cmd:'adb logcat -s -v time MYTAG -d',它不会转储并退出。正确的顺序是:'adb logcat -d -s -v time MYTAG'。 – HackNone 2011-05-28 06:06:57

0

您可以按以下方式

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

尝试,如果你想在连续循环执行,U可以试试这个:

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

要为特定进程查看logcat的:

adb logcat | grep <process_id> 

查看具有标签名称的特定进程的logcat:

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

|  acts as a seperator for combining different queries.