Android adb logcat을 사용하여 TAG 이름으로 특정 메시지를 제외하는 방법은 무엇입니까?


답변:


51

사용하는 경우 adb logcatgrep을 통해 파이프하고 반전 된 일치를 사용할 수 있습니다. From the grep manpage :

v, --invert-match 일치하지 않는 줄을 선택하려면 일치감을 반전시킵니다.

예를 들면 :

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

정규식 을 사용하여이를 확장 할 수 있습니다 .

다음은 이러한 식의 예입니다.

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

이것은 주어진 것 중 하나가 발생하는지 확인하고 grep은 나열하지 않습니다.


1
@zest grep는 표준 유닉스 명령입니다. Windows의 경우 시도해 볼 수 있습니다 find /V "notshownmatchpattern". 추신 : 분명히 adb 셸에는 grep. 그러나 그것은 표준 유닉스와 동일하지 않습니다 grep!
PCoder 2013 년

네, FINDSTR, 이미 그것을 발견 - 파워 쉘 또는 그렙 설치가 가능 빨아 (순전히 실제로 추가 정보에 쓴되면서 :) 리눅스와 동일 창문을하지만)
나디 Ryabkin

아니, 나는 단지 git 명령 줄 도구로 git을 설치하기 위해 windows를 위해 adivce 할 것이다. 이것은 windowze에 대한 모든 기본 유닉스 명령 줄 도구를 설치합니다.
크리스 polzer

또는 windowze에 일반적인 유닉스 명령 행 도구에 대한 땡그랑 소리 설치
크리스 polzer

@PCoder Windows CMD에서 동일한 작업을 수행하는 전체 명령을 작성해 주시겠습니까?
Raghav Satyadev 2016-06-22

217

정규식 입력 상자와 부정적 미리보기 어설 션을 사용하여 DDMS Monitor (및 Eclipse 또는 Android Studio)에서이를 수행 할 수 있습니다. 예를 들어 다음과 같이 로그에서 많은 노이즈를 제외하고 있습니다.

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

( "tag :"는 정규식의 일부가 아니지만 LogCat에 정규식을 태그 필드에만 적용하도록 지시합니다. 저장된 필터에서이 트릭을 사용하는 경우 "태그"입력 상자에 정규식 만 넣으십시오. , "tag :"접두사 생략)

Android Studio의 logcat 모니터 창에서 오른쪽 상단의 드롭 다운을 열고 ( "선택한 애플리케이션 만 표시"가 선택되어있을 수 있음) 필터 구성 편집을 선택하여 저장된 필터를 설정할 수 있습니다. 새 logcat 필터를 만들고 ^(?!(WifiMulticast... etc를 넣으십시오 . ))로그 태그 상자에 Regex확인란이 선택되어 있습니다.


Eclipse LogCat을위한 좋은 솔루션
Seraphim의

6
내 시야가 즉시 덜 흐릿합니다! : D
suomi35

이것은 내가 꽤 오랫동안 찾고있는 것입니다
ar-g

매력처럼 일했다! 감사합니다. 또한 "dalvikvm"이라는 단어를 추가합니다. logcat에서 가장 짜증납니다.
Atul

1
- 로그 캣 필터링 않음 적절한 하나 stackoverflow.com/a/17468665/828237
kwesolowski

74

Android 스튜디오에서 태그 이름으로 특정 메시지를 제외하거나 필터링하려면 LogCat 창 => 필터 구성 편집으로 이동하여 "로그 태그 (정규식) 별"아래에 다음을 입력하십시오.

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

공백이 없습니다. 이것은 중요합니다.


이 답변은 intellij 15의 logcat> Edit Filter Configuration에서 작동하며 "Create New Logcat Filter"라는 모달을 표시합니다.
petey

1
감사합니다. BTW 레노버 전화는 스팸 로그 메시지를 많이 가지고
갈매기

이는 해당 태그가있는 로그가 로그에 렌더링되는 것을 방지합니다. 모니터는 여전히 백그라운드에서 이러한 호출로 가득 차 있으며 "tag1 | tag2 | etc"가 아닌 호출을 버퍼 밖으로 밀어냅니다. 그 주위에 방법이 있습니까?
TheBestBigAl

- 로그 캣 필터링 않음 적절한 하나 stackoverflow.com/a/17468665/828237
kwesolowski

또는 태그가 하나 인 경우^(?!tag1)
Vlad

34

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

이것은 WindowManager, dalvik, ... 내용이있는 텍스트를 제외합니다.

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

이것은 logcat에서 WindowManager, dalvik, ... 태그를 제외합니다.


좀 더 :^(?!(WifiMulticast|WifiHW|MtpService|PushClient|EGL_emulation|OpenGl*|InputReader|art|dalvik|Environment|DataRouter|AlarmManager|WindowManager|PhoneStatusBar|ActivityManager|ResourceType|PackageManager|gralloc*))
Gurupad Mamadapur

기타 : (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 | DropivityTaskManager | EventLogChimeraService | ocess. PContextMetricsRunner))
Graeme

32

셸에서 다음과 같은 명령을 사용할 수 있습니다.

adb logcat AlarmManagerService:S PowerManagerService:S *:V

여기에는 AlarmManagerServicePowerManagerService태그 가있는 로그를 제외한 모든 로그가 포함됩니다 .

( :S"silent"는 해당 태그에 대해 아무것도 인쇄되지 않음을 :V의미하고 "verbose"는 다른 모든 태그에 대해 모든 것이 인쇄됨을 의미합니다. logcat에 대한 Android 문서 에는 사용할 수있는 다른 옵션에 대한 자세한 내용이 있습니다. 필터.)

ANDROID_LOG_TAGS환경 변수를 사용하여 기본 필터를 설정할 수도 있습니다 (예 : bash에서).

export ANDROID_LOG_TAGS="AlarmManagerService:S PowerManagerService:S *:V"

이것은 좋은 제안이며 파이프 라인없이 명령 줄에서 작동합니다. ": S"부분이 명명 된 구성 요소 (거의 발생하지 않음)에 대해서만 Severe 메시지를 내 보낸다는 것을 설명하기 위해 대답 imho를 업데이트해야합니다. 다시 한 번 좋은 대답입니다. 사람들이 하나 ... 투표를한다
크리스 마클

1
@ChrisMarkle 문서에 따르면 S'침묵'입니다. 나는 당신이 제안한 것처럼 이것을 설명하기 위해 답변을 업데이트했습니다.
Rich

2
환경 변수 ANDROID_LOG_TAGS를 사용하여 동일한 방식으로 logcat 출력을 필터링 할 수 있습니다. 더 많은 스팸 프로세스를 제외하도록 항상 설정하는 것이 유용합니다.
emidander

16

보다 강력한 필터링을 위해 긍정 및 부정 예측을 모두 결합합니다.

예:

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

첫 번째 중첩 된 괄호 안의 태그가 포함됩니다.

초의 태그는 제외됩니다.


IMHO, 이것은 로그를 필터링하는보다 포괄적 인 방법입니다.
Ritesh Gune 2017 년

4

다음은 삼성 시스템 로그 를 무시하는 데 사용했던 필터 목록입니다 . 다른 장치에서도 작동합니다.

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))

1

이를 수행하는 쉬운 방법은보고 싶은 태그 만 필터링하는 것입니다.

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

해당 태그 만 표시됩니다.


0

Eclipse Logcat보기에는 이러한 옵션이 없습니다. 그러나 로그 수준을 사용하여 로그 수준이 너무 낮은 메시지를 제외 할 수 있습니다. 예. I (nfo)로 설정하면 D (ebug) 및 (V) erbose 메시지가 표시되지 않습니다.


글쎄요, 명령 프롬프트에서 / 전화 내부에서 로그를 읽는다는 것을 언급하는 것을 잊었습니다. 그리고 화면을 탭할 때마다 화면을 가득 채우는 InputReader / InputDispatcher 메시지가 표시됩니다. 이제 필터를 "InputReader : S InputDispatcher : S"로 설정하는 것도 볼 수 있습니다. :) 답변 주셔서 감사합니다!
Kostas 2011-04-01
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.