回答:
使用しているadb logcat
場合は、grepを介してそれをパイプ処理し、逆マッチングを使用できます。grepのマンページから:
v、-invert-match一致の意味を反転して、一致しない行を選択します。
例えば:
$adb logcat | grep --invert-match 'notshownmatchpattern'
このような式の例を次に示します。
"/^(?:emails|tags|addresses)"
これは、指定されたいずれかが発生するかどうかをチェックし、grepはそれらをリストしません。
grep
は標準のUNIXコマンドです。Windowsの場合は、試してみてくださいfind /V "notshownmatchpattern"
。PSどうやら、adbシェルにもがありgrep
ます。しかし、それは標準のunixと同じではありませんgrep
!
これは、DDMSモニター(およびEclipseまたはAndroid Studio)内から、正規表現の入力ボックスと否定的な先読みアサーションを使用して行うことができます。たとえば、次のようにして、ログから多くのノイズを除外しています。
tag:^(?!(WifiMulticast|WifiHW|MtpService|PushClient))
(「tag:」は正規表現の一部ではありませんが、LogCatに正規表現を[タグ]フィールドにのみ適用するように指示します。このトリックを保存済みフィルターで使用する場合は、[タグ]入力ボックスに正規表現のみを入力してください、「tag:」プレフィックスを省略します)
Android Studioのlogcatモニターペインで、右上のドロップダウン([選択したアプリケーションのみを表示]が選択されている場合があります)を開き、[フィルター構成の編集]を選択することで、このための保存されたフィルターを設定できます。新しいlogcatフィルターを作成し、^(?!(WifiMulticast
... etc を配置します。チェックボックスをオン))
にした状態で、[ログタグ]ボックスにRegex
Androidスタジオで特定のメッセージをタグ名で除外またはフィルタリングする場合は、LogCatウィンドウ=> [フィルター構成の編集]に移動し、[ログタグ(正規表現)で]に次のように入力します。
^(?!(tag1|tag2|tag3|tag4))
スペースがないことに注意してください。これは重要です
^(?!tag1)
^(?!.*(WindowManager|dalvik|Environment|DataRouter|AlarmManager)).*$
これにより、WindowManager、dalvikなどのコンテンツを持つテキストが除外されます。
tag:^(?!.*(WindowManager|dalvik|Environment|DataRouter|AlarmManager)).*$
これにより、WindowManager、dalvikなどのタグがlogcatから除外されます。
^(?!(WifiMulticast|WifiHW|MtpService|PushClient|EGL_emulation|OpenGl*|InputReader|art|dalvik|Environment|DataRouter|AlarmManager|WindowManager|PhoneStatusBar|ActivityManager|ResourceType|PackageManager|gralloc*))
シェルから、次のようなコマンドを使用できます。
adb logcat AlarmManagerService:S PowerManagerService:S *:V
これで、これらとは別に、すべてのログが含まれますAlarmManagerService
し、PowerManagerService
タグがます。
(:S
「サイレント」は、これらのタグに対して何も出力されないことを意味します。:V
「verbose」は、他のすべてのタグに対してすべてが出力されることを意味します。logcatのAndroidドキュメントには、他のオプションの詳細が記載されています。フィルター。)
ANDROID_LOG_TAGS
環境変数を使用して、デフォルトのフィルターを設定することもできます(例:(bash)):
export ANDROID_LOG_TAGS="AlarmManagerService:S PowerManagerService:S *:V"
S
は「サイレント」用です。しかし、あなたが提案するように、私はこれを説明するために答えを更新しました。
より強力なフィルタリングのために、ポジティブとネガティブの両方の先読みを組み合わせます。
例:
(?=(AndroidRuntime|Main|RandomTag))(?!(Audio))
最初のネストされた括弧内のタグが含まれます。
2番目のタグは除外されます。
以下は、Samsungシステムログを無視するために使用しているフィルターのリストです。他のデバイスでも動作します。
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))
これを行う簡単な方法は、表示したいタグのみをフィルタリングすることです。
adb logcat -s "Tag1" -s "Tag2" -s "Tag3"
それらのタグのみを表示します。
Eclipse Logcatビュー内には、そのようなオプションはありません。ただし、ログレベルを使用して、ログレベルが低すぎるメッセージを除外することができます。例:I(nfo)に設定すると、D(ebug)および(V)erboseメッセージは表示されません。