web-dev-qa-db-fra.com

Comment filtrer une variable dans la visionneuse Eclipse LogCat

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

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

72
Jleuleu

Oui. Créez un filtre où se trouve le champ "Par balise de journal"

^(?!.*(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 un moyen plus simple de faire cette négation, mais je viens de l'essayer et cela fonctionne.

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

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

qui affichera tous les messages sauf balises "DeskClock", "dalvik" et "wpa".

180
Rob Cranfill

Cela peut ne pas sembler directement pertinent pour la question, mais voici une expression régulière qui filtre la plupart des journaux générés par le système lorsque vous mettez cela dans votre filtre de balises comme décrit par 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 balises au fur et à mesure que je les rencontre en train de tester sur différents appareils. La liste n'est pas exhaustive et vous êtes libre de contribuer à cette réponse. Je suis sûr que cela fera gagner une heure à beaucoup.

S'il existe d'autres journaux dont vous avez besoin de filtrer, ajoutez-les à cette expression régulière à l'aide d'un '| ' personnage.

9
Vinay Wadhwa

Cela dépend de la façon dont vous affichez votre logcat.

Si vous utilisez l'interface GUI logcat, il est préférable de créer un filtre pour les balises que vous souhaitez voir. Ceux-ci sont tombés dans une catégorie distincte. Bien que l'interface utilisateur ait un peu changé, vous pouvez utiliser cela ancienne réponse de moi . Doit être clair sur la façon dont cela est utilisé (assurez-vous que le bouton "afficher l'onglet des filtres enregistrés" est bien enfoncé, sinon vous ne verrez pas le bouton "Ajouter un filtre". Vous pouvez le trouver sur en haut à droite du journal) . Je ne connais aucune option qui vous permet de filtrer certaines balises de l'ensemble du flux de journaux.

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

adb logcat AndroidRuntime:S *:V

montre tout (*:V) jusqu'au niveau du journal détaillé, à l'exception de la balise AndroidRuntime , qui sera limitée au niveau de journalisation "silence", ce qui signifie qu'il n'imprimera rien .

Pour afficher une seule balise, vous pouvez utiliser

adb logcat *:S MyAppTag:V OtherTag:V

De la même manière, tout devient silencieux sauf MyAppTag et OtherTag . Voir Filtrage de la sortie du journal pour plus de détails.

8
user658042

Je n'ai pas pu obtenir la solution choisie pour fonctionner correctement dans Android Studio (le IDE qui viendra avec les futures versions de Android = SDK). Cependant, l'expression rationnelle suivante a résolu mon problème:

^(?!dalvikvm)
5
Mailson

J'ai une astuce:

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

Comme vous pouvez le voir, lorsque je filtre avec une clé "MyTag", il affiche uniquement le journal de mon tag.

3
R4j

Il s'agit d'une réponse tardive, mais peut-être utile. Dans l'environnement Eclipse, dans la vue LogCat, au-dessus du tableau, il y a une zone de recherche. Faites attention, lorsqu'il est vide, il indique:

Recherchez des messages. Accepte Java regexes. Préfixe avec pid :, app :, balise: ou texte: pour limiter la portée.

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

1
ilomambo

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

Niveau de journal: détaillé

"Afficher uniquement l'application sélectionnée" (dans la liste déroulante de sélection du filtre)

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

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

0
Elliott