2011-10-25 6 views
72

Ho un'applicazione Android che "spam" il LogCat e vorrei rimuovere le sue voci logcat per avere un output più leggibile.Come filtrare un tagname nel visualizzatore Eclipse LogCat

È possibile avere un filtro che rimuove le voci LogCat per un nome di tag specifico? O un modello di ricerca che fa il trucco?

+0

@pankaj Non è esattamente quello che voglio. Voglio un modo per rimuovere alcune voci specifiche anziché isolarle. – Jleuleu

risposta

178

Sì. Creare un filtro in cui il campo "per tag di registro" è

^(?!.*(MYTAG)).*$ 

dove MYTAG è il tag non si vuole vedere. Non sono un esperto di regexp (un "regexpert"? ;-)) quindi potrebbe esserci un modo più semplice per fare quella negazione, ma l'ho appena provato e funziona.

Si può giocare con il filtro nel campo appena sopra l'area dei messaggi Log Cat, inserendo stringhe di filtro lì, in questo modo:

tag:^(?!.*(DeskClock|dalvik|wpa)).*$ 

che mostrerà tutti i messaggi tranne tag "DeskClock" , "dalvik" e "wpa".

+0

È anche possibile aggiungere questa espressione regolare alla barra di ricerca sopra l'elenco nella vista LogCat di Eclipse. Grazie! –

+0

Grazie. Ho sempre avuto problemi nel creare regexp che mostrasse solo l'output che non corrisponde. Molto utile. DDMS è attualmente utile. – chriv

+0

Grazie mille. Questo è molto utile, non sapevo che avrei potuto usare regex qui. – razielsarafan

8

Dipende dal modo in cui si visualizza il logcat.

Se si utilizza l'interfaccia della GUI logcat è consigliabile creare un filtro per i tag che si desidera visualizzare. Questi vengono lasciati cadere in una categoria separata. Anche se l'interfaccia utente è leggermente cambiata, puoi usare questo old answer from me. Dovrebbe essere chiaro come questo viene usato (assicurati che il pulsante "visualizza i filtri salvati nella scheda" sia premuto, altrimenti non vedrai il pulsante "Aggiungi filtro". Puoi trovarlo nella parte in alto a destra del registro). Non sono a conoscenza di alcuna opzione che ti consenta di filtrare determinati tag da tutto il logstream.

Se si utilizza la riga di comando è possibile disattivare alcuni tag. Esempio:

adb logcat AndroidRuntime:S *:V 

mostra tutto (*:V) fino al livello di registro dettagliato, tranne il tag AndroidRuntime, che sarà limitata al livello di log "silenzio", il che significa che stamperà nulla.

Per visualizzare un singolo tag è possibile utilizzare

adb logcat *:S MyAppTag:V OtherTag:V 

stesso modo, tutto viene messo a tacere tranne MyAppTag e OtherTag. Vedi Filtering Log Output per maggiori dettagli.

+0

Grazie, 'adb logcat : S *: V' è quello che stavo cercando. Vorrei lo stesso comportamento nell'interfaccia logcat della GUI Eclipse, ma per ora userò la riga di comando. – Jleuleu

3

ho un trucco:

Log.d(TAG, "MyTag" + message); 

Come si può vedere, quando ho filtro con una chiave "MyTag", mostra solo registrare dal mio tag.

1

Questa è una risposta tardiva, ma forse utile. Nell'ambiente Eclipse, nella vista LogCat, sopra la tabella c'è una casella di ricerca. Attenzione, a vuoto si legge:

Ricerca di messaggi. Accetta regex Java.Prefisso con pid :, app :, tag: o testo: per limitare l'ambito.

significa che è possibile filtrare il tag scrivendo ci tag: MyTag o anche regex tag:. Il mio *

9

Questo potrebbe non sembrare direttamente rilevanti per la domanda, ma qui è un'espressione regolare che filtra la maggior parte dei registri generati dal sistema quando viene inserito nel filtro dei tag as described by Rob.

^(?!(WifiMulticast|WifiHW|MtpService|PushClient|InputMethodManager|Provider|SurfaceTextureClient|ImageLoader|dalvikvm|OpenGLRenderer|skia|AbsListView|MediaPlayer|AudioManager|VelocityTracker|Drv|Jpeg|CdpDrv|IspDrv|TpipeDrv|iio|ImgScaler|IMG_MMU|ResMgrDrv|JpgDecComp|JpgDecPipe|mHalJpgDec|PipeMgrDrv|mHalJpgParser|jdwp|libEGL|Zygote|Trace|InputEventReceiver|SpannableStringBuilder|IInputConnectionWrapper|MotionRecognitionManager|Choreographer|v_galz|SensorManager|Sensors|GC|LockPatternUtils|SignalStrength|STATUSBAR-BatteryController|BatteryService|STATUSBAR-PhoneStatusBar|WifiP2pStateTracker|Watchdog|AlarmManager|BatteryStatsImpl|STATUSBAR-Clock)) 

Continuo ad aggiornare questo elenco di tag mentre li incontro test su dispositivi diversi. L'elenco non è esaustivo e sei libero di contribuire a questa risposta. Sono sicuro che questo salverà un'ora per molti.

Se ci sono altri registri, è necessario filtrarli, aggiungerli a questa regex utilizzando un '| ' carattere.

5

Non ho potuto ottenere la soluzione scelta per funzionare correttamente in Android Studio (l'IDE che arriverà con versioni future di Android SDK). Tuttavia la seguente espressione regolare risolto il mio problema:

^(?!dalvikvm) 
+0

Funziona per me , grazie! – huangcd

0

Un altro modo per filtrare i messaggi di log che non hanno origine dalla tua app è quello di selezionare:

Log Livello: Verbose

"Mostra selezionata solo applicazione "(dal menu a tendina della selezione del filtro)

Quindi selezionare la propria applicazione dall'elenco a discesa di debugging nella finestra di logcat.

Questo dovrebbe mostrare solo i messaggi di registro e l'output dalla tua app.

+0

In ogni caso .... è necessario regex per filtrare l'elaborazione di texture indesiderate ... e altre cose con il nome della tua app. – Davidea

Problemi correlati