如何过滤 logcat 以删除不相关的语句

问题描述

我是 Android Studio 的新手,使用最新版本,并尝试编写一个基本的计算器应用程序。

出于某种原因,我的 logcat 充满了 2021-01-11 14:38:35.288 6938-6938/? W/cmd: Can't find service car_service

这对于调试来说真的很烦人。

我怎样才能摆脱它?

解决方法

我会将我的评论更改为答案,好像它确实有帮助:

单击 android studio 底部的 logcat,然后(我假设)您的将显示 no filters,将该下拉列表更改为 show only selected application。我在这里不能解释太多,除了如果你没有像这样设置它,除了来自你自己的应用程序的日志之外,logcat 还会打印出与你的应用程序无关的东西

,

另外,对于所有未来的读者...... Android Logcat 非常冗长,尤其是在模拟器上(很多事情会抛出错误/警告)但不限于;三星设备吐出的日志多于有用的信息(而且它们并不孤单),因此将其置于some 控制之下的一种方法是(ab)使用 Android Studio 中 logcat 过滤器的 Regex 功能。

例如:

创建一个新的 LogCat 过滤器并按标签、消息或包(或像我一样的所有 3 个)过滤:

这是我在“消息”中使用的示例:

^((?!EGL_emulation|eglCodecCommon|OpenGLRenderer|MicroDetectionWorker|MicroDetector|KeyguardClockSwitch|adbd|OIMC|base.apk|wakelock|com.google.android.apps.youtube.music).)*$

您可以编辑/添加更多内容和/或为日志标签、消息或包名称重复这些内容。

这主要是反复试验。 (有些设备通过 logcat 吐出不同的垃圾邮件)。

我针对这个“非常过滤的应用”输出的日志标签过滤器是:

^((?!vendor.qti.bluetooth|AppDynamics|KeyguardUpdateMonitor|BatteryExternalStatsWorker|BatteryStatsService|tftp_server|Clock|libc|OnePlusSmartBoostManager|OnePlus|ANDR-RAMBOOST_SERVER|BoundBrokerSvc|DateView|BatteryStatsHelper|BoundBrokerSvc|RenderThread|FacsCacheGmsModule|DownloadProgressMonitor|MendelPackageState|GoogleTagManager|SELinux|Volley|ConfigFileUtils|NetRec|YouTubeMusic|GEL_DELAYED_EVENT_DEBUG|gms|AsyncOperation|angh|ContentCacheSuperpacksManager|SuperpacksManager|AwarenessClientProvider|WakeLock|GLSUser|perfetto|cmd|chatty|Binder|Fitness|Icing|GnssHAL_GnssInterface).)*$

和包名称:

^((?!EGL_emulation|eglCodecCommon|OpenGLRenderer|MicroDetectionWorker|MicroDetector|KeyguardClockSwitch|adbd|OIMC|base.apk|wakelock|com.google.android.apps.youtube.music).)*$

当然您的里程会因您的需要而有所不同,有时我会编辑这些并添加/删除一些我认为合适的部分。

这是它的样子:

Image of Android Studio Dialog creating a New Logcat Filter

LogCat bar showing the Regex Checkbox checked and selected Filter created above