Logcat permet de filtrer les journaux mais cela fonctionne comme ça: vous définissez des filtres et logcat n'affiche que les messages qui correspondent aux filtres. Mais y a-t-il un moyen d'afficher tous les journaux SAUF certains TAG définis par des filtres?
123
Réponses:
Si vous utilisez,
adb logcat
vous pouvez le faire passer par grep et utiliser sa correspondance inversée: Depuis la page de manuel grep :Par exemple:
Vous pouvez étendre cela en utilisant des expressions régulières .
Voici un exemple d'une telle expression:
Celui-ci vérifierait si l'un ou l'autre des éléments donnés se produisait, grep ne les listerait alors pas.
la source
grep
est une commande unix standard. Pour Windows, vous pouvez essayerfind /V "notshownmatchpattern"
. PS Apparemment, le shell adb a également ungrep
. Mais ce n'est pas la même chose que l'unix standardgrep
!Vous pouvez le faire à partir de DDMS Monitor (et également Eclipse ou Android Studio) avec la zone de saisie d'expression régulière et les assertions d'anticipation négatives , par exemple, j'exclus beaucoup de bruit de mon journal avec les éléments suivants:
(Le "tag:" ne fait pas partie de l'expression régulière, mais indique à LogCat de n'appliquer l'expression régulière qu'au champ Tag. Si vous utilisez cette astuce dans un filtre enregistré, mettez uniquement l'expression régulière dans la zone de saisie "Tag" , et omettez le préfixe "tag:")
Dans le volet du moniteur logcat d'Android Studio, vous pouvez configurer un filtre enregistré pour cela en ouvrant la liste déroulante en haut à droite (il se peut que l'option "Afficher uniquement l'application sélectionnée" soit sélectionnée) et en sélectionnant Modifier la configuration du filtre. Créez un nouveau filtre logcat et mettez
^(?!(WifiMulticast
... etc.))
dans la case Log Tag, avec laRegex
case cochée.la source
Si vous souhaitez exclure ou filtrer certains messages par nom de balise dans le studio Android, accédez à la fenêtre LogCat => Modifier la configuration du filtre, et entrez ce qui suit sous "par balise de journal (regex):"
Notez qu'il n'y a pas d'espaces, c'est important
la source
^(?!tag1)
^(?!.*(WindowManager|dalvik|Environment|DataRouter|AlarmManager)).*$
Cela exclura les textes ayant des contenus WindowManager, dalvik, ...
tag:^(?!.*(WindowManager|dalvik|Environment|DataRouter|AlarmManager)).*$
Cela exclura les balises WindowManager, dalvik, ... de logcat
la source
^(?!(WifiMulticast|WifiHW|MtpService|PushClient|EGL_emulation|OpenGl*|InputReader|art|dalvik|Environment|DataRouter|AlarmManager|WindowManager|PhoneStatusBar|ActivityManager|ResourceType|PackageManager|gralloc*))
Depuis le shell, vous pouvez utiliser une commande comme:
qui inclura tous les journaux à l'exception de ceux avec les balises
AlarmManagerService
etPowerManagerService
.(L'
:S
abréviation de "silent", ce qui signifie que rien ne sera imprimé pour ces balises; l':V
acronyme de "verbose" qui signifie que tout sera imprimé pour toutes les autres balises. La documentation Android pour logcat contient plus de détails sur les autres options que vous pouvez utiliser dans les filtres.)Vous pouvez également utiliser la
ANDROID_LOG_TAGS
variable d'environnement pour configurer des filtres par défaut, par exemple (dans bash):la source
S
c'est pour «silencieux». J'ai mis à jour la réponse pour expliquer cela, comme vous le suggérez.Combinez les anticipations positives et négatives pour un filtrage plus puissant.
Exemple:
Les balises dans les premières parenthèses imbriquées sont incluses.
Les balises en seconde sont exclues.
la source
Voici une liste de filtres que j'ai utilisés pour ignorer les journaux système Samsung . fonctionnerait également avec d'autres appareils.
la source
Un moyen simple de le faire est de filtrer simplement les balises que vous souhaitez voir.
Ne fera apparaître que ces balises.
la source
Dans la vue Eclipse Logcat, il n'y a pas une telle option. Cependant, vous pouvez utiliser le niveau de journalisation pour exclure tout message dont le niveau de journalisation est trop bas. Par exemple. le régler sur I (nfo) n'affiche pas les messages D (ebug) et (V) erbose.
la source