我有一个“垃圾邮件” LogCat的Android应用程序,我想删除其logcat条目以使输出更具可读性。
是否可以使用过滤器删除特定标签名称的LogCat条目?还是可以解决问题的搜索模式?
Answers:
是。创建一个过滤器,其中“按日志标签”字段为
^(?!.*(MYTAG)).*$
MYTAG
您不希望看到的标签在哪里。我不是regexp专家(“ regexpert”?;-)),所以可能有一种更简单的方法来进行这种否定,但是我只是尝试了一下,它就可以了。
您可以在Log Cat消息区域上方的字段中使用过滤器,方法是在其中输入过滤器字符串,如下所示:
tag:^(?!.*(DeskClock|dalvik|wpa)).*$
它将显示除标签“ DeskClock”,“ dalvik”和“ wpa”以外的所有消息。
^(?!.*(tag1|tag2|tag3|...|tagn)).*$
这似乎与问题没有直接关系,但是这是一个正则表达式,当您将其放入如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))
当我在不同的设备上进行测试时,我会不断更新标签列表。列表并不详尽,您可以自由地为这个答案做出贡献。我相信这将为许多人节省一个小时。
如果还有其他需要过滤的日志,请使用'|将它们附加到此正则表达式中。字符。
取决于您查看logcat的方式。
如果使用的是GUI logcat界面,则最好为要查看的标签创建过滤器。这些被分为一个单独的类别。尽管ui有所更改,但是您可以使用我的旧答案。应该清楚如何使用它(不过请确保按下“显示保存的过滤器选项卡”按钮,否则您将看不到“添加过滤器”按钮。您可以在日志的右上角找到它)。我不知道有任何选项可以让您从整个日志流中过滤掉某些标记。
如果使用命令行,则可以使某些标签静音。例:
adb logcat AndroidRuntime:S *:V
显示*:V
直到详细日志级别的所有内容(),但标记AndroidRuntime除外,该标记将限于“ silence”日志级别,这意味着它将不打印任何内容。
要显示单个标签,您可以使用
adb logcat *:S MyAppTag:V OtherTag:V
同样,除了MyAppTag和OtherTag之外,所有内容都被静默。有关更多详细信息,请参见过滤日志输出。
adb logcat <tag-name>:S *:V
这就是我想要的。我希望在Eclipse GUI logcat界面中具有相同的行为,但是现在我将使用命令行。