按标签名称过滤logcat输出

169

我正在尝试通过标签名称过滤来自真实设备(而不是模拟器)的logcat输出,但我得到了所有消息,这相当于垃圾邮件。我只想读取来自浏览器的消息,应该是类似于"browser:"或"webkit:",但它不起作用... 这是我得到的:

actual output

5个回答

338

使用以下代码:

adb logcat -s "TAGNAME"

8
谢谢! 以上等同于 adb logcat *:s '标签名称' - munch
4
我该如何过滤掉一个<tagname>? - Arunabh Das
您还可以使用ANDROID_LOG_TAGS环境变量来实现此操作,如果您始终使用某个过滤器,则这非常有用。 - emidander
1
能否使用以上命令与-f文件名一起使用?比如,我的场景是按TagName过滤日志并将其转储到文本文件中。 - Green goblin
10
"adb logcat TAGNAME:s"命令可以静默掉一个嘈杂的标签。 - Don Park
显示剩余4条评论

73

如果有人像我一样偶然发现这篇文章,你可以通过在标签之间添加逗号来筛选多个标签,如下所示:

adb logcat -s "browser","webkit"

请解释我应该把这段代码放在哪里。我是新手,请解释一下。 - Zar E Ahmer
1
@Nepster 在终端中输入这个。 - async
如果您在 Windows 上使用 Cygwin,您可以使用 grep... 是的,它可以工作。 - sgupta

16

另一种选择是针对特定标签设置日志级别:

adb logcat SensorService:S PowerManagerService:S NfcService:S power:I Sensors:E

如果你只想针对某些标签设置日志级别,则可以逐个标签设置。


9
不要依赖ADB shell,把它(adb logcat)当作普通的Linux输出并将其传输:
$ adb shell logcat | grep YouTag
# just like: 
$ ps -ef | grep your_proc 

8
这个选择很糟糕,因为会发送许多不必要的流量,并且过滤器显然无法起作用。如果一个无关的进程记录了某些包含特定字符串的消息,那么这些消息也会被显示出来。 - John Smith
“并且过滤器显然不起作用”,你试过了吗?我试过了,并根据结果贴出了我的答案。 - Siwei
1
问题是关于Windows的,其中grep不可用。 - runfaj
1
如果你在Windows上使用Cygwin,你可以使用grep...是的,这可行。 - sgupta

9

这是我创建标签的方法:

private static final String TAG = SomeActivity.class.getSimpleName();
 Log.d(TAG, "some description");

你可以使用getCannonicalName。
我有以下TAG过滤器:
- 任何(*)视图 - 冗长 - 任何(*)活动 - 冗长 - 以Xyz(*)开头的任何标签 - 错误 - System.out - 静默(因为我在自己的代码中使用Log)
这是我在终端中输入的内容:
$  adb logcat *View:V *Activity:V Xyz*:E System.out:S

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