如何在Eclipse LogCat Viewer中过滤出标记名


75

我有一个“垃圾邮件” LogCat的Android应用程序,我想删除其logcat条目以使输出更具可读性。

是否可以使用过滤器删除特定标签名称的LogCat条目?还是可以解决问题的搜索模式?


@pankaj这不是我想要的。我想要一种删除某些特定条目而不是隔离它们的方法。
耶路乌勒2011年

Answers:


183

是。创建一个过滤器,其中“按日志标签”字段为

^(?!.*(MYTAG)).*$

MYTAG您不希望看到的标签在哪里。我不是regexp专家(“ regexpert”?;-)),所以可能有一种更简单的方法来进行这种否定,但是我只是尝试了一下,它就可以了。

您可以在Log Cat消息区域上方的字段中使用过滤器,方法是在其中输入过滤器字符串,如下所示:

tag:^(?!.*(DeskClock|dalvik|wpa)).*$

它将显示标签“ DeskClock”,“ dalvik”和“ wpa”以外的所有消息。


您还可以将此正则表达式添加到Eclipse LogCat视图中列表上方的搜索栏中。谢谢!
SMBiggs 2012年

谢谢。我一直在构建正则表达式时遇到问题,该正则表达式将仅显示不匹配的输出。很有帮助。DDMS现在实际上很有用。
chriv

非常感谢你。这非常有用,不知道我可以在这里使用正则表达式。
Charlie-Blake的

有人可以解释一下此表达式的确切工作方式吗?
价格

1
通过将其更改为以下形式,可以在该表达式中容纳任意数量的标签:^(?!.*(tag1|tag2|tag3|...|tagn)).*$
Reuben Tanner

9

这似乎与问题没有直接关系,但是这是一个正则表达式,当您将其放入如Rob所述的标签过滤器中时,它会过滤掉大多数系统生成的日志。

^(?!(WifiMulticast|WifiHW|MtpService|PushClient|InputMethodManager|Provider|SurfaceTextureClient|ImageLoader|dalvikvm|OpenGLRenderer|skia|AbsListView|MediaPlayer|AudioManager|VelocityTracker|Drv|Jpeg|CdpDrv|IspDrv|TpipeDrv|iio|ImgScaler|IMG_MMU|ResMgrDrv|JpgDecComp|JpgDecPipe|mHalJpgDec|PipeMgrDrv|mHalJpgParser|jdwp|libEGL|Zygote|Trace|InputEventReceiver|SpannableStringBuilder|IInputConnectionWrapper|MotionRecognitionManager|Choreographer|v_galz|SensorManager|Sensors|GC|LockPatternUtils|SignalStrength|STATUSBAR-BatteryController|BatteryService|STATUSBAR-PhoneStatusBar|WifiP2pStateTracker|Watchdog|AlarmManager|BatteryStatsImpl|STATUSBAR-Clock))

当我在不同的设备上进行测试时,我会不断更新标签列表。列表并不详尽,您可以自由地为这个答案做出贡献。我相信这将为许多人节省一个小时。

如果还有其他需要过滤的日志,请使用'|将它们附加到此正则表达式中。字符。


8

取决于您查看logcat的方式。

如果使用的是GUI logcat界面,则最好为要查看的标签创建过滤器。这些被分为一个单独的类别。尽管ui有所更改,但是您可以使用我的旧答案。应该清楚如何使用它(不过请确保按下“显示保存的过滤器选项卡”按钮,否则您将看不到“添加过滤器”按钮。您可以在日志的右上角找到它)。我不知道有任何选项可以让您从整个日志流中过滤掉某些标记。

如果使用命令行,则可以使某些标签静音。例:

adb logcat AndroidRuntime:S *:V

显示*:V直到详细日志级别的所有内容(),但标记AndroidRuntime除外,该标记将限于“ silence”日志级别,这意味着它将不打印任何内容。

要显示单个标签,您可以使用

adb logcat *:S MyAppTag:V OtherTag:V

同样,除了MyAppTagOtherTag之外,所有内容都被静默。有关更多详细信息,请参见过滤日志输出


谢谢,adb logcat <tag-name>:S *:V这就是我想要的。我希望在Eclipse GUI logcat界面中具有相同的行为,但是现在我将使用命令行。
耶留留勒2011年

5

我无法选择在Android Studio(Android SDK的将来版本随附的IDE)中正常工作的解决方案。但是以下正则表达式解决了我的问题:

^(?!dalvikvm)

3

我有一个窍门:

 Log.d(TAG, "MyTag" + message);

如您所见,当我使用“ MyTag”键进行过滤时,它仅显示来自我的标签的日志。


1

这是一个较晚的响应,但可能有用。在Eclipse环境中,在表格上方的LogCat视图中,有一个搜索框。请注意,为空时显示为:

搜索消息。接受Java正则表达式。以pid:,app:,tag:或text:为前缀以限制范围。

这意味着您可以通过在其中写入tag:MyTag或正则表达式tag:My来过滤标签。*


0

筛选出并非来自您的应用的日志消息的另一种方法是选择:

日志级别:详细

“仅显示选定的应用程序”(从过滤器选择下拉列表中)

然后从logcat窗口的可调试下拉列表中选择您的应用程序。

这应该只显示日志消息和应用程序的输出。


无论如何....您需要使用正则表达式来过滤掉不需要的纹理细节...以及其他带有您应用名称的东西。
Davideas
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.