我有一个Android应用程序“垃圾”LogCat,我想删除它的logcat条目,以使输出更具可读性。
是否可以使用过滤器删除特定标记名称的LogCat条目?或者是一种能够解决问题的搜索模式?
答案 0 :(得分:180)
是。创建一个过滤器,其中“按日志标记”字段为
^(?!.*(MYTAG)).*$
其中MYTAG
是您不希望看到的标记。我不是一个正则表达式专家(一个“regexpert”?;-))所以可能有一种更简单的方法来做这种否定,但我只是尝试了它并且它有效。
您可以在Log Cat消息区域上方的字段中使用过滤器,方法是输入过滤字符串,如下所示:
tag:^(?!.*(DeskClock|dalvik|wpa)).*$
将显示所有消息除标签“DeskClock”,“dalvik”和“wpa”。
答案 1 :(得分:9)
这似乎与问题没有直接关系,但这里有一个正则表达式,当您将其放入标记过滤器as described by 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))
我不断更新这个标签列表,因为我遇到他们在不同设备上进行测试。该列表并非详尽无遗,您可以自由地为此答案做出贡献。我相信这会为许多人节省一个小时。
如果还有其他其他日志需要过滤掉,请使用“|”将它们附加到此正则表达式'性格。
答案 2 :(得分:8)
取决于您查看logcat的方式。
如果您使用的是GUI logcat界面,最好为要查看的标签创建过滤器。这些被分为单独的类别。虽然ui改变了一点,但你可以使用这个old answer from me。应该清楚如何使用它(确保按下“显示已保存的过滤器选项卡”按钮,否则你将看不到“添加过滤器”按钮。你可以在右上角找到它日志)。我不知道有任何选项可以让你从整个日志流中过滤掉某些标签。
如果您使用的是命令行,则可以将某些标签静音。例如:
adb logcat AndroidRuntime:S *:V
显示除了标记 AndroidRuntime 之外的所有内容(*:V
),除了标记 AndroidRuntime 之外,它将仅限于“silent”loglevel,这意味着它将不会打印任何内容。 / p>
要显示单个标签,您可以使用
adb logcat *:S MyAppTag:V OtherTag:V
同样,除了 MyAppTag 和 OtherTag 之外,所有内容都会被静音。有关详细信息,请参阅Filtering Log Output。
答案 3 :(得分:5)
我无法在Android Studio(将与未来版本的android SDK一起提供的IDE)中正确选择解决方案。然而,以下正则表达式解决了我的问题:
^(?!dalvikvm)
答案 4 :(得分:3)
我有一个技巧:
Log.d(TAG, "MyTag" + message);
正如您所看到的,当我使用“MyTag”键过滤时,它只显示来自我的标签的日志。
答案 5 :(得分:1)
这是一个迟到的回应,但也许有用。 在Eclipse环境中,在LogCat视图中,表格上方有一个搜索框。 注意,空的时候会看到:
搜索消息。接受Java正则表达式。前缀为pid:,app:, tag:或text:限制范围。
这意味着您可以通过写标记:MyTag 甚至正则表达式标记来过滤您的标记:我的。*
答案 6 :(得分:0)
过滤掉不是来自您应用的日志消息的另一种方法是选择:
日志级别:详细
"仅显示选定的应用程序" (来自过滤器选择下拉列表)
然后从logcat窗口的下拉调试列表中选择您的应用程序。
这应该只显示你的应用程序的日志消息和输出。