web-dev-qa-db-ja.com

Android adb logcatを使用して特定のメッセージをTAG名で除外する方法は?

Logcatはログのフィルタリングを許可しますが、次のように機能します。フィルターを定義すると、logcatはフィルターに一致するメッセージのみを表示します。しかし、フィルターによって定義された一部のタグを除くすべてのログを表示する方法はありますか?

119
Kostas

adb logcatを使用している場合、grepを介してパイプし、逆のマッチングを使用できます。 grep manpage から:

v、-invert-match一致の感覚を反転させて、一致しない行を選択します。

例えば:

$adb logcat | grep --invert-match 'notshownmatchpattern' 

正規表現 を使用してこれを拡張できます。

そのような式の例を次に示します。

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

これは与えられたものが発生するかどうかをチェックし、grepはそれらをリストしません。

50
chris polzer

これは、DDMSモニター内(およびEclipseまたはAndroid Studio)から正規表現入力ボックスと 負の先読みアサーション を使用して行うことができます。たとえば、次のように私のログから多くのノイズ:

tag:^(?!(WifiMulticast|WifiHW|MtpService|PushClient))

(「タグ:」は正規表現の一部ではありませんが、タグフィールドに正規表現のみを適用するようにLogCatに指示します。保存したフィルターでこのトリックを使用する場合は、「タグ」入力ボックスに正規表現のみを入力します、「tag:」プレフィックスを省略します)

Android Studioのlogcatモニターペインでは、右上のドロップダウンを開き([選択したアプリケーションのみを表示]が選択されている場合があります)、フィルター構成の編集を選択して、このフィルターを保存します) 。新しいlogcatフィルターを作成し、^(?!(WifiMulticast ...など)) [ログタグ]ボックスで、Regexチェックボックスをオンにします。

215
ZoFreX

Android studioのタグ名で特定のメッセージを除外またはフィルターする場合は、LogCatウィンドウ=>フィルター構成の編集に移動し、[by Log Tag(regex):]の下に次を入力します。

^(?!(tag1|tag2|tag3|tag4))

スペースがないことに注意してください、これは重要です

69
Phileo99

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

これにより、WindowManager、dalvikなどのコンテンツを含むテキストが除外されます。

tag:^(?!.*(WindowManager|dalvik|Environment|DataRouter|AlarmManager)).*$

これにより、LogManagerからWindowManager、dalvik、...タグが除外されます

31
Rino

シェルから、次のようなコマンドを使用できます。

_adb logcat AlarmManagerService:S PowerManagerService:S *:V
_

これには、AlarmManagerServiceおよびPowerManagerServiceタグ付きのログを除くすべてのログが含まれます。

(_:S_は "silent"を表し、これらのタグには何も印刷されません。_:V_は "verbose"を表し、他のすべてのタグにすべてが印刷されます。 logcat のAndroidドキュメントには、フィルターで使用できる他のオプションの詳細が記載されています。

_Android_LOG_TAGS_環境変数を使用して、デフォルトのフィルターを設定することもできます。 (bashで):

_export Android_LOG_TAGS="AlarmManagerService:S PowerManagerService:S *:V"
_
28
Rich

より強力なフィルタリングのために、正と負の両方の先読みを組み合わせます。

例:

(?=(AndroidRuntime|Main|RandomTag))(?!(Audio))

最初のネストされた括弧内のタグが含まれます。

2番目のタグは除外されます。

16
Baker

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|[email protected]|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))
2
Damindu

これを行う簡単な方法は、見たいタグだけをフィルタリングすることです。

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

それらのタグのみを表示します。

1
Wintermute

Eclipse Logcatビューには、そのようなオプションはありません。ただし、ログレベルを使用して、ログレベルが低すぎるメッセージを除外できます。例I(nfo)に設定すると、D(ebug)および(V)erboseメッセージは表示されません。

0
Lars Blumberg