在Eclipse中为多个标签过滤Android LogCat

46

点击“创建筛选器”后,我无法从文档中找到如何为两个或多个标签创建筛选器的方法。如果我有两个标签com.test.TestClassAcom.test.TestClassB,我该如何创建一个显示这两个类的日志的筛选器?我看到了如何启动ADB仅针对某些标签,但在Eclipse中如何做到呢?请提供详细的信息,谢谢。在Eclipse中创建新筛选器时,我需要输入什么内容?

7个回答

53

正如Brain Reinhold所指出的,您可以使用竖线|将标签过滤器组合起来(这显然意味着逻辑“OR”)。您还可以在logcat搜索框中使用该语法(通过在标签前加上tag:前缀)。

tag:com.test.TestClassA|com.test.TestClassB

更复杂的过滤也是可行的。例如,这是一个搜索过滤器,显示来自android.process.mediacom.android.camera应用程序的消息,其中消息文本中至少有一个数字(\d),并且带有dalvikvmAndroidRuntime标签:

app:android.process.media|com.android.camera tag:dalvikvm|AndroidRuntime text:\d

Screenshot

一个简短而有用的过滤器是tag:^(?!dalvikvm),它可以去除所有嘈杂的Dalvik日志。

值得一提的是,您可以通过在要禁用的部分末尾放置垂直条来快速禁用过滤器的任何部分(例如,在上面的示例中,在app:android.process.media|com.android.camera右侧放置|可以有效地禁用按应用程序名称过滤,同时仍然保留按标签和文本过滤)。


1
使用时也可以仅使用单词的一部分进行过滤,例如使用cam代替com.android.camera。但请注意,它是区分大小写的!例如,对于蓝牙开发,我使用tag:BT|luetooth|bt|Bt|MyAppTag - OneWorld

26
在Eclipse的最新SDK版本中,现在Logcat显示了两个版本(一个已弃用); 在未废弃的版本中,可以使用OR符号“|”组合过滤器。例如,当单击“+”并弹出对话框以创建新的过滤器时,请为您的过滤器命名,然后在其中一个字段(例如TAG)中输入“com.lampreynetworks | Bluetooth”,您将看到包含“com.lampreynetworks”和“Bluetooth”的所有标记的输出。星号“*”是隐含的,因为如果标记的任何部分包含该文本的任何部分,则将显示该标记。还要注意,OR条之间不能有空格!我没有尝试结合“按TAG”和“按(其他选项)”进行过滤,但我有一种感觉,那样做不会奏效。

5
OR 条之间不要有空格! - Brian Reinhold

9
在2月12日凌晨2:58,AndroidDevTime写道:
如果我有两个标签com.test.TestClassA和com.test.TestClassB,如何创建一个过滤器以显示这两个类的日志?
"Log tag"字段接受Java正则表达式,因此可以这样做:
^com.test.TestClassA$|^com.test.TestClassB$
这将完全匹配您指定的标签。根据您想要处理多少内容,您可以更加简洁/高效。

我真的想不出如何使用它。使用Runtime.getRuntime().exec()编程时,它根本无法工作。 - Shine


2
我只是从命令行中操作。每个adb过滤器都有一个不同的终端。然后,将它们并排放置,您就可以很好地了解发生了什么。

1
我所见过的唯一方法是使用PID创建一个过滤器,这样你应用程序的每个日志消息都将显示在该过滤器中。我想知道在当前版本的Eclipse ADT中是否可以通过标签名称实现这一点。

1
我也很想知道... 我使用 PID、单个标签和/或多个过滤器。在标签过滤器中没有元字符吗? - DJC

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接