Logcat 允许过滤日志,但它的工作原理是这样的: 定义过滤器,Logcat 只显示与过滤器匹配的消息。但是,除了过滤器定义的一些标签之外,是否有一种方法可以显示所有日志?
如果你正在使用 adb logcat,你可以通过 grep 来管道化它,并使用它的反向匹配: 来自 Grep Manpage:
adb logcat
反相匹配 反转匹配感,选择不匹配的行。
例如:
$adb logcat | grep --invert-match 'notshownmatchpattern'
您可以使用 正则表达式对其进行扩展。
下面是这种表达的一个例子:
"/^(?:emails|tags|addresses)"
这个函数将检查给定的任何一个要发生的情况,然后 grep 将不会列出它们。
在 Eclipse Logcat 视图中没有这样的选项。但是,可以使用日志级别排除任何日志级别过低的消息。例如,将其设置为 I (nfo)不显示 D (调试)和(V)详细消息。
你可以在 DDMS Monitor (以及 Eclipse 或 Android Studio)中使用正则表达式输入框和 消极的前瞻性断言来完成这项工作,例如,我使用以下命令从日志中排除了大量噪音:
tag:^(?!(WifiMulticast|WifiHW|MtpService|PushClient))
(“ Tag:”不是正则表达式的一部分,但告诉 LogCat 只将正则表达式应用于 Tag 字段。如果您在保存的过滤器中使用这个技巧,那么只需将正则表达式放在“ Tag”输入框中,并省略“ Tag:”前缀)
在 Android Studio 的 logcat 监视窗格中,您可以通过打开右上角的下拉列表(它可能选择了“仅显示选定的应用程序”)并选择 Edit Filter Configuration 来设置保存的过滤器。创建一个新的 logcat 过滤器并放入 ^(?!(WifiMulticast... 等等。在 Log Tag 框中选中 Regex复选框。
^(?!(WifiMulticast
Regex
^(?!.*(WindowManager|dalvik|Environment|DataRouter|AlarmManager)).*$
这将排除包含 WindowManager,Dalvik,... ... 内容的文本。
tag:^(?!.*(WindowManager|dalvik|Environment|DataRouter|AlarmManager)).*$
这将从 logcat 中排除标记 WindowManager、 Dalvik、 ...
在 shell 中,您可以使用如下命令:
adb logcat AlarmManagerService:S PowerManagerService:S *:V
它将包括除 AlarmManagerService和 PowerManagerService标记之外的所有日志。
AlarmManagerService
PowerManagerService
(:S代表“无声”,这意味着不会为这些标签打印任何东西; :V代表“冗长”,这意味着所有东西都将为所有其他标签打印。Logcat 的 Android 文档提供了可以在过滤器中使用的其他选项的更多细节。)
:S
:V
你也可以使用 ANDROID_LOG_TAGS环境变量设置默认过滤器,例如:
ANDROID_LOG_TAGS
export ANDROID_LOG_TAGS="AlarmManagerService:S PowerManagerService:S *:V"
如果您想在 Android 工作室中通过标签名排除或过滤某些消息,请转到 LogCat 窗口 = > Edit Filter configuration,并在“ by Log Tag (regex)”下面输入以下内容:
^(?!(tag1|tag2|tag3|tag4))
注意没有空格,这很重要
结合积极和消极的前瞻,更强大的过滤。
(?=(AndroidRuntime|Main|RandomTag))(?!(Audio))
包括第一个嵌套括号中的标记。
第二个标记被排除在外。
一个简单的方法是只过滤您想要看到的标记。
adb logcat -s "Tag1" -s "Tag2" -s "Tag3"
只会显示那些标签。
下面是我用来忽略 三星系统日志的过滤器列表。
Logcat-> 编辑过滤器配置-> 日志标记
^(?!(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))
还可以在 Android 工作室的 logcat GUI 中创建自己的过滤器。 例如,我对 logcat 中的 OpenGLRenderer 和 ViewRoot 消息感到非常恼火。
在 logcat 中单击 EditFilterConfiguration 并创建一个新的筛选器。 在日志标签输入中,您可以输入类似 ^(?!.*(OpenGLRenderer|ViewRoot))的内容,并添加其他一些令您烦恼的标签。
^(?!.*(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))
对于新的 LogcatV2,您应该使用以下示例:
-tag~: chatty|WifiHAL|HwBinder|Light|lsc_nvram|SensorService|thermal_repeater
诸如此类