2011-10-25 2 views
72

J'ai une application Android qui "spams" le LogCat et je voudrais supprimer ses entrées logcat afin d'avoir une sortie plus lisible.Comment filtrer une variable dans Eclipse LogCat viewer

Est-il possible d'avoir un filtre qui supprime les entrées LogCat pour un nom de tag spécifique? Ou un motif de recherche qui fait l'affaire?

+0

@pankaj Ce n'est pas exactement ce que je veux. Je veux un moyen de supprimer certaines entrées spécifiques plutôt que de les isoler. – Jleuleu

Répondre

178

Oui. Créer un filtre où le « journal par tag » champ est

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

MYTAG est la balise que vous ne voulez pas voir. Je ne suis pas un expert en regexp (un "regexpert"? ;-)) donc il peut y avoir une façon plus simple de faire cette négation, mais j'ai juste essayé cela et cela fonctionne.

Vous pouvez jouer avec le filtre dans le champ juste au-dessus de la zone de message Connexion Chat, en entrant il y a des chaînes de filtre, comme ceci:

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

qui montrera tous les messages sauf balises « DeskClock » , "dalvik" et "wpa".

+0

Vous pouvez également ajouter cette regex à la barre de recherche située au-dessus de la liste dans la vue LogCat d'Eclipse. Merci! –

+0

Merci. J'ai toujours eu des problèmes pour construire une regexp qui montrerait seulement la sortie qui ne correspond pas. Très utile. DDMS est réellement utile maintenant. – chriv

+0

Merci beaucoup. C'est tellement utile, je ne savais pas que je pourrais utiliser des regex ici. – razielsarafan

8

Dépend de la façon dont vous visualisez votre logcat.

Si vous utilisez l'interface GUI logcat, il est préférable de créer un filtre pour les balises que vous voulez voir. Ceux-ci sont tombés dans une catégorie séparée. Bien que l'interface utilisateur a changé un peu, vous pouvez utiliser ce old answer from me. Doit être clair comment cela est utilisé (assurez-vous que le bouton "afficher les filtres enregistrés" est pressé, sinon vous ne verrez pas le bouton "Ajouter un filtre" Vous pouvez le trouver en haut à droite du journal). Je ne suis pas au courant d'une option qui vous permet de filtrer certaines balises de l'ensemble du flux de données.

Si vous utilisez la ligne de commande, vous pouvez désactiver certaines variables. Exemple:

adb logcat AndroidRuntime:S *:V 

montre tout (*:V) jusqu'au niveau de journal détaillé, à l'exception de la balise AndroidRuntime, qui sera limitée à la loglevel « silence », ce qui signifie qu'il imprime rien.

Pour afficher une balise unique, vous pouvez utiliser

adb logcat *:S MyAppTag:V OtherTag:V 

Même façon, tout est réduit au silence, sauf MyAppTag et OtherTag. Voir Filtering Log Output pour plus de détails.

+0

Merci, 'adb logcat : S *: V' est ce que je cherchais. Je voudrais le même comportement dans l'interface Eclipse GUI logcat, mais pour l'instant je vais utiliser la ligne de commande. – Jleuleu

3

J'ai un truc:

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

Comme vous pouvez le voir, quand je filtre avec une clé « MyTag », il ne montre que log de mon tag.

1

Ceci est une réponse tardive, mais peut-être utile. Dans l'environnement Eclipse, dans la vue LogCat, au-dessus de la table se trouve un champ de recherche. Faites attention, quand il est vide, il se lit comme suit:

Rechercher des messages. Accepte les expressions rationnelles Java.Préfixe avec pid :, app :, tag: ou texte: pour limiter la portée.

Cela signifie que vous pouvez filtrer votre étiquette en écrivant il tag: MyTag ou même regex tag :. Mon *

9

Cela ne semble pas directement pertinent à la question, mais voici une regex qui filtre la plupart des journaux générés par le système lorsque vous mettez cela dans votre filtre de balise 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)) 

Je continue de mettre à jour cette liste de tags car je les rencontre en train de tester sur différents périphériques. La liste n'est pas exhaustive et vous êtes libre de contribuer à cette réponse. Je suis sûr que cela économisera une heure pour beaucoup.

Si d'autres journaux doivent être filtrés, ajoutez-les à cette expression régulière en utilisant '| ' personnage.

5

Je ne pouvais pas obtenir la solution choisie pour fonctionner correctement dans Android Studio (l'IDE qui viendra avec les futures versions d'android SDK). Cependant, le regex suivant a résolu mon problème:

^(?!dalvikvm) 
+0

Fonctionne pour moi , Je vous remercie! – huangcd

0

Une autre façon de filtrer les messages du journal qui ne proviennent pas de votre application est de sélectionner:

Log Level: verbeux

« Afficher uniquement SELECTIONNES application »(à partir du menu déroulant de sélection du filtre)

Sélectionnez ensuite votre application dans la liste déroulante de la liste déroulante de la fenêtre logcat.

Cela ne devrait afficher que les messages du journal et les résultats de votre application.

+0

Quoi qu'il en soit .... vous avez besoin de regex pour filtrer l'élaboration de texture indésirable ... et d'autres choses avec le nom de votre application. – Davidea

Questions connexes