如何使用Android adb logcat按标记名排除某些消息?

如何使用Android adb logcat按标记名排除某些消息?,android,filter,adb,logcat,Android,Filter,Adb,Logcat,Logcat允许过滤日志,但它的工作原理是这样的:您定义过滤器,Logcat只显示与过滤器匹配的消息。但是有没有一种方法可以显示除过滤器定义的某些标记之外的所有日志?如果您使用的是adb logcat,您可以通过grep将其导入并使用其反向匹配: 从: v、 --反向匹配 反转匹配的意义,以选择不匹配的线 例如: $adb logcat | grep --invert-match 'notshownmatchpattern' 您可以使用扩展 以下是此类表达式的示例: "/^(?:emails

Logcat允许过滤日志,但它的工作原理是这样的:您定义过滤器,Logcat只显示与过滤器匹配的消息。但是有没有一种方法可以显示除过滤器定义的某些标记之外的所有日志?

如果您使用的是
adb logcat
,您可以通过grep将其导入并使用其反向匹配: 从:

v、 --反向匹配 反转匹配的意义,以选择不匹配的线

例如:

$adb logcat | grep --invert-match 'notshownmatchpattern' 
您可以使用扩展

以下是此类表达式的示例:

"/^(?:emails|tags|addresses)"

这一个将检查给定的任何一个选项是否发生,grep将不会列出它们。

在Eclipse Logcat视图中没有这样的选项。但是,您可以利用日志级别排除任何日志级别过低的消息。例如。将其设置为I(nfo)不会显示D(ebug)和(V)erbose消息。

您可以使用正则表达式输入框从DDMS监视器(以及Eclipse或Android Studio)中执行此操作,例如,我通过以下操作从日志中排除大量噪音:

tag:^(?!(WifiMulticast|WifiHW|MtpService|PushClient))
(标记:”不是正则表达式的一部分,但告诉LogCat仅将正则表达式应用于标记字段。如果在保存的筛选器中使用此技巧,则只将正则表达式放入“标记”输入框中,并省略“标记:”前缀)

在Android Studio的logcat监视器窗格中,您可以通过打开右上角的下拉列表(它可能选择了“仅显示选定的应用程序”)并选择编辑过滤器配置来为此设置保存的过滤器。创建一个新的logcat过滤器,并将
^(?(WifiMulticast
…等
放在日志标记框中,选中
Regex
复选框。

^(?。*(WindowManager | dalvik | Environment | DataRouter | AlarmManager)).$

这将排除包含WindowManager、dalvik等内容的文本

标记:^(?。*(WindowManager | dalvik | Environment | DataRouter | AlarmManager)).$


这将排除WindowManager、dalvik等标记,。。。从shell的logcat中,可以使用如下命令:

adb logcat AlarmManagerService:S PowerManagerService:S *:V
这将包括除带有
AlarmManagerService
PowerManagerService
标记之外的所有日志

(代表“无提示”的
:S
表示这些标记将不打印任何内容;
:V
表示“详细”,表示所有其他标记都将打印所有内容。中有可在过滤器中使用的其他选项的详细信息。)

您还可以使用
ANDROID\u LOG\u TAGS
环境变量设置默认过滤器,例如(在bash中):


如果要在Android studio中按标记名排除或过滤某些消息,请转到LogCat窗口=>编辑过滤器配置,然后在“按日志标记(regex)”下输入以下内容:


请注意,没有空格,这一点很重要

将正向和反向前瞻相结合,以实现更强大的过滤功能

例如:

(?=(AndroidRuntime|Main|RandomTag))(?!(Audio))
包括第一个嵌套括号中的标记


第二个标签被排除在外。

一个简单的方法是只过滤你想看到的标签

adb logcat -s "Tag1" -s "Tag2" -s "Tag3"

将只显示那些标签。

以下是我用来忽略三星系统日志的过滤器列表。也可以与其他设备一起使用

日志猫->编辑过滤器配置->日志标签


在Android Studio logcat GUI中,还可以选择制作自己的过滤器。 例如,我对logcat中的OpenGLRenderer和ViewRoot消息感到非常恼火

在logcat中,单击编辑过滤器配置并创建新过滤器。 在日志标记输入中,您可以键入类似于
^(?。*(OpenGLRenderer | ViewRoot))
的内容,并添加一些其他让您恼火的标记


这是我收集到的最常见的恼人标签

^(?!.*(OpenGLRenderer|ViewRoot|ForceDarkHelper|Looper|PlayCore|AudioTrack|SurfaceUtils|cr_ChildProcessConn|FA|ActivityThread|DynamiteModule|Perf|DynamitePackage|EgretLoader|cr_LibraryLoader|BpBinder|chatty|FeatureParser|MediaCodec|ExtendedACodec|MapperHal|OMXClient|VideoCapabilities|Gralloc3|MetadataUtil|AdrenoGLES|chromium|DpmTcmClient|WebViewFactory|cr_CachingUmaRecorder|AdrenoUtils|cr_media|AudioManager|cr_SpareChildConn|Chrome_InProcGp|Choreographer|AdInternalSettings|Keep-Alive|Vary|pool-15-thread-|WifiMulticast|WifiHW|MtpService|PushClient|EGL_emulation|OpenGl*|InputReader|art|dalvik|Environment|DataRouter|AlarmManager|WindowManager|PhoneStatusBar|ActivityManager|ResourceType|PackageManager|gralloc|Gnss|NetRec|ResolverController|GAv4|AsyncOperation|AppOps|WificondControl|aofp|wifi|netmgr|ctxmgr|BestClock|FirebaseInstanceId|android.os.Debug|memtrack|netd|system_server|StrictMode|bluetooth|NetworkMonitor|FA|BroadcastQueue|ConnextivityService|WakeLock|HttpClientWrapper|RAWR|Tenor|BgTask|WifiService|BluetoothAdapter|UpdateStatsService|AppIdleHistory|Connectivity|VelvetNetworkClient|WorkerManager|EGL_emulation|chatty|gralloc|InputReader|ActivityThread|ActivityTaskManager|UsageStatsService|ocess.gservice|DropBoxManagerService|EventLogChimeraService|PContextMetricsRunner))


我忘了提到我在命令提示符下/在手机内使用它来读取日志。每次我点击屏幕时,它都会显示InputReader/InputDispatcher消息,这些消息正充斥着屏幕。现在我看到将过滤器设置为“InputReader:S InputDispatcher:S”也可以工作:)谢谢您的回答@zest
grep
是一个标准的unix命令。对于windows,您可以尝试
查找/V“notshownmachpattern”
。另外,adb壳牌显然也有一个
grep
。但它与标准unix
grep
不同!是的,我已经找到了,findstr-suck,可以安装powershell或grep(适用于windows:),与自述文件中所述的Linux相同,但在实践中并不多)不,我只希望windows使用git命令行工具安装git。这将为windowze安装所有基本的unix命令行工具,或为Windows上的常见unix命令行工具安装clinkwindowze@PCoder你能用windows CMD编写完整的命令吗?这是一个很好的建议,可以在没有管道的命令行中运行。您应该更新您的答案imho,以解释“:S”部分只会为命名组件发出严重消息(这几乎不会发生)。再一次,回答得好。人们应该投票支持这个…@ChrisMarkle根据文件,
S
代表“沉默”。正如您所建议的,我已经更新了答案来解释这一点。您可以使用环境变量ANDROID\u LOG\u TAGS以相同的方式过滤logcat输出。我发现总是将其设置为排除一些更垃圾的进程是很有用的。Eclipse Logcati的好解决方案我的愿景马上就不那么模糊了!:这就是我一直在寻找的魅力!非常感谢。在其中添加“dalvikvm”一词。这在logcat中是最烦人的。使用logcat筛选的答案是正确的-此答案在intellij 15的logcat>编辑筛选器配置中有效,该配置会显示一个名为“创建新的logcat筛选器”的模式。谢谢。顺便说一句,联想手机有很多垃圾邮件日志信息,但这只能防止带有该标签的日志被呈现到日志中。
adb logcat -s "Tag1" -s "Tag2" -s "Tag3"
^(?!(PowerUI|PowerPlanningReceiver|BatteryService|SamsungPhoneWindowManager|MotionRecognitionService|AudioService|APM_AudioPolicyManager|SensorService|StorageManager|SignalClusterView|BatteryService|TelephonyManager|UsbDeviceManager|KeyguardUpdateMonitor|BatteryController|ActivityManager|LauncherAppsService|AppsModel|DataLoader|PackageManager|LauncherApps|ContactsImsCommon|ImsUtil|ImsSettingsProvider|DeviceConfigManager|WifiService|BackupManagerService|PersonaManagerService|DefaultDialerManager|ResourceType|NetworkUIGlobals|NetworkProxy|FileWriteThread|ReflectUtil|PhoneApp|SamsungAlarmManager|display|DeviceStorageMonitorService|wrapperGPS|io_stats|GnssLocationProvider|KeyguardServiceBoxContainer|ConnectivityService|SSRM|TLC_TIMA_PKM_initialize|mc_tlc_communication|TeeDriverClient|TLC_TIMA_PKM_measure_kernel|AutomaticBrightnessController|BatteryUtils|WifiConnectivityManager|Launcher|IconView|ApplicationPackageManager|LiveIconLoader|WifiScanningService|WifiHAL|WifiScanController|ApplicationPolicy|SELinux|TimaKeyStoreProvider|ActivityThread|zygote|GservicesProvider|GoogleHttpClient|cr_ChildProcessConnect|WificondControl|Netd|Tethering|ContactsImsCommon|ImsConstants|tnet-jni|BatteryStatsService|SignalClusterView|LiveIconManager|BitmapCacheContainer|com.samsung.android.app.powerplanning.utils.BatteryUtils|ReflectField|cr_ChildConnAllocator|TinLoadingFailTracker|WifiPermissionsUtil|EventHandler_FLP|android.hardware.wifi@1.0-service|BluetoothAdapter|bt_btm|WifiPermissionsUtil|GeofencerStateMachine|Places|GCoreUlr|BeaconBle|Sensors|SLocation|ContactsProvider_EventLog|WificondScannerImpl|AlarmManager|AlarmManagerEXT|MultiDex|NetworkSecurityConfig|DnsProxyListener|dalvik-internals|mobileconfig|SsacManager|ImsPhoneStateManager|VolteServiceModule|PdnController|PowerManagerService|GameManagerService|NoSync|SensorManager|DisplayPowerController|NetworkController|SamsungAnalytics111040|tlcFidoAuthnr|InputReader|FlashlightController|KeyguardWallpaperController|OpenGLRenderer|EasyMuteController|Vibrator|VibratorService|PowerManagerUtil|LightsService|WindowManager|InputDispatcher|InputReader|CustomFrequencyManagerService|SystemUIAnalytics|SamsungAnalytics|swipe|PanelView|BadgeCache|MARsPolicyManager|MARsDBManager|KeyguardClockPage|ScanManager|RegiMgrBase|secImsManager|GeolocationController|MultiSimUtils|CarrierText|Mms|NetworkNotificationUI2|CommandListener|ReschedulableTimer|RCS-ContactsImsCommon|Settings|DmConfigModule|NotificationMgr2|PhoneMultiSimUtils|PhoneProxy|VideoCapabilities|AudioCapabilities|SAIV_FACE|FaceController|FaceService|SamsungAnimationCreator|ImageWallpaper|Finsky|VirtualScreen|PagedView|DragLayer|HomeContainer|ImsServiceStub|DmConfigHelper|TZ))
^(?!.*(OpenGLRenderer|ViewRoot|ForceDarkHelper|Looper|PlayCore|AudioTrack|SurfaceUtils|cr_ChildProcessConn|FA|ActivityThread|DynamiteModule|Perf|DynamitePackage|EgretLoader|cr_LibraryLoader|BpBinder|chatty|FeatureParser|MediaCodec|ExtendedACodec|MapperHal|OMXClient|VideoCapabilities|Gralloc3|MetadataUtil|AdrenoGLES|chromium|DpmTcmClient|WebViewFactory|cr_CachingUmaRecorder|AdrenoUtils|cr_media|AudioManager|cr_SpareChildConn|Chrome_InProcGp|Choreographer|AdInternalSettings|Keep-Alive|Vary|pool-15-thread-|WifiMulticast|WifiHW|MtpService|PushClient|EGL_emulation|OpenGl*|InputReader|art|dalvik|Environment|DataRouter|AlarmManager|WindowManager|PhoneStatusBar|ActivityManager|ResourceType|PackageManager|gralloc|Gnss|NetRec|ResolverController|GAv4|AsyncOperation|AppOps|WificondControl|aofp|wifi|netmgr|ctxmgr|BestClock|FirebaseInstanceId|android.os.Debug|memtrack|netd|system_server|StrictMode|bluetooth|NetworkMonitor|FA|BroadcastQueue|ConnextivityService|WakeLock|HttpClientWrapper|RAWR|Tenor|BgTask|WifiService|BluetoothAdapter|UpdateStatsService|AppIdleHistory|Connectivity|VelvetNetworkClient|WorkerManager|EGL_emulation|chatty|gralloc|InputReader|ActivityThread|ActivityTaskManager|UsageStatsService|ocess.gservice|DropBoxManagerService|EventLogChimeraService|PContextMetricsRunner))