Comment exclure certains messages par le nom D'étiquette en utilisant ADB logcat Android?

Logcat permet de filtrer les journaux, mais cela fonctionne comme cela: vous définissez les filtres et logcat affiche seulement les messages qui correspondent aux filtres. Mais y a-t-il un moyen d'afficher tous les logs à L'exception de quelques TAGs définis par des filtres?

111
demandé sur Kostas 2011-04-01 13:19:33

8 réponses

si vous utilisez adb logcat vous pouvez le pipe à travers grep et utiliser il est inversé correspondant: Du grep manpage :

v, --invert-match Inverser le sens de l'appariement, pour sélectionner les lignes non-appariées.

par exemple:

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

vous pouvez étendre cela en utilisant expressions régulières .

Voici exemple d'une telle expression:

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

celui-ci vérifierait que l'un ou l'autre des cas donnés se produisent, grep ne les énumérerait alors pas.

46
répondu chris polzer 2013-05-22 23:46:39

vous pouvez le faire à partir de DDMS Monitor (et aussi Eclipse ou Android Studio) avec la boîte de saisie de l'expression régulière et déclarations d'anticipation négative , par exemple, j'exclus beaucoup de bruit de mon journal avec ce qui suit:

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

(Le "tag:" ne fait pas partie de l'expression régulière, mais dit LogCat de n'appliquer que la regex à la Balise de champ. Si vous utilisez cette astuce dans un filtre enregistrée puis mettez juste l'expression régulière dans le "Tag" zone de saisie, et d'omettre le "tag:" prefix)

dans le volet moniteur logcat D'Android Studio, vous pouvez configurer un filtre sauvegardé en ouvrant le menu déroulant en haut à droite (il peut avoir sélectionné" Afficher seulement l'application sélectionnée") et en sélectionnant Modifier la Configuration du filtre. Créer un nouveau filtre logcat et mettre ^(?!(WifiMulticast ...etc. )) dans la case du journal de bord, la case Regex étant cochée.

205
répondu ZoFreX 2017-02-21 14:49:59

si vous voulez exclure ou filtrer certains messages par le nom de la balise dans Android studio, allez dans la fenêtre LogCat = > modifier la configuration du filtre, et entrez ce qui suit sous "by Log Tag (regex): "

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

Notez qu'il n'y a pas d'espaces, c'est important

66
répondu Phileo99 2015-04-14 18:27:10

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

ceci exclura les textes ayant des contenus WindowManager, dalvik,...

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

ceci exclura tags WindowManager, dalvik,... de logcat

29
répondu Rino 2016-06-19 09:27:43

depuis le shell, vous pouvez utiliser une commande comme:

adb logcat AlarmManagerService:S PowerManagerService:S *:V

qui inclura toutes les grumes à l'exception de celles portant les étiquettes AlarmManagerService et PowerManagerService .

(le :S signifie "silencieux", ce qui signifie que rien ne sera imprimé pour ces étiquettes; le :V signifie "verbeux", ce qui signifie que tout sera imprimé pour toutes les autres étiquettes. La documentation Android pour logcat a plus de détails de d'autres options que vous pouvez utiliser dans les filtres.)

vous pouvez également utiliser la variable d'environnement ANDROID_LOG_TAGS pour configurer les filtres par défaut, par exemple (en bash):

export ANDROID_LOG_TAGS="AlarmManagerService:S PowerManagerService:S *:V"
26
répondu Rich 2014-02-07 10:36:55

Combine les lookahead positif et négatif pour un filtrage plus puissant.

exemple:

(?=(AndroidRuntime|Main|RandomTag))(?!(Audio))
Les étiquettes

dans les premières parenthèses imbriquées sont incluses.

Les étiquettes

en seconde sont exclues.

15
répondu Baker 2015-06-08 16:43:56

dans la vue Logcat D'Eclipse il n'y a pas une telle option. Toutefois, vous pouvez utiliser le niveau de journalisation pour exclure tout message dont le niveau de journalisation est trop faible. Par exemple: le paramètre I (nfo) n'affiche pas les messages d(ebug)et (V) erbose.

0
répondu Lars Blumberg 2011-04-01 09:43:19

un moyen facile de faire cela est simplement en filtrant dans les étiquettes que vous voulez voir.

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

ne mentionnera que ces étiquettes.

0
répondu Wintermute 2018-06-28 10:43:57