Filtrer la sortie dans logcat par nom de variable


151

J'essaie de filtrer la sortie logcat d'un appareil réel (pas un émulateur) par nom de balise mais je reçois tous les messages, ce qui est tout à fait un spam. Je veux juste lire les messages du navigateur qui devraient être quelque chose comme "browser: " ou "webkit: ", mais cela ne fonctionne pas ... Voici ce que j'obtiens:

sortie réelle

Réponses:


294

utilisez ceci:

adb logcat -s "TAGNAME"

7
Je vous remercie! Ce qui précède est équivalent à adb logcat *: s 'tagname'
munch

3
Comment puis-je filtrer un <tagname>?
Arunabh Das

Je pense que la seule façon de filtrer est par niveaux. Par exemple, si une application envoie du spam au débogage, définissez le niveau de logcat pour afficher uniquement les informations et les niveaux supérieurs: logcat *: I
Someone Somewhere

1
Est-il possible d'utiliser ci-dessus avec -f nom de fichier? Dites, mon scénario consiste à filtrer les journaux par TagName et à les vider dans un fichier texte.
Green goblin

9
Das - "adb logcat TAGNAME: s" fera 's'ilence une balise bruyante.
Don Park

56

Au cas où quelqu'un trébucherait dessus comme je l'ai fait, vous pouvez filtrer sur plusieurs balises en ajoutant une virgule entre les deux, comme ceci:

adb logcat -s "browser","webkit"

Expliquez où dois-je mettre ce code. Je suis une nouvelle abeille. Veuillez expliquer
Zar E Ahmer

1
@Nepster Tapez cela dans le terminal.
async

Si vous utilisez cygwin sous Windows, vous pouvez utiliser grep ... et oui, cela fonctionne.
sgupta

12

Une autre option consiste à définir les niveaux de journalisation pour des balises spécifiques:

adb logcat SensorService: S PowerManagerService: S NfcService: S power: I Capteurs: E

Si vous souhaitez simplement définir les niveaux de journalisation pour certaines balises, vous pouvez le faire balise par balise.


9

Ne dépendez pas du shell ADB, traitez-le simplement (adb logcat) comme une sortie linux normale, puis pipez-le:

$ adb shell logcat | grep YouTag
# just like: 
$ ps -ef | grep your_proc 

5
C'est un mauvais choix car beaucoup de trafic inutile est envoyé et le filtre ne fonctionnera évidemment pas. Si un message de journal de processus non lié contenant une chaîne apparaîtra.
John Smith

and the filter obviously won't work, as-tu essayé? J'ai, et collé ma réponse en fonction du résultat.
Siwei Shen 申思维

1
La question était pour Windows, où grep n'est pas disponible
sroskelley

1
Si vous utilisez cygwin sur Windows, vous pouvez utiliser grep ... et oui, cela fonctionne.
sgupta

6

Voici comment je crée un tag:

private static final String TAG = SomeActivity.class.getSimpleName();
 Log.d(TAG, "some description");

Vous pouvez utiliser getCannonicalName

Ici, j'ai les filtres TAG suivants:

  • any (*) View - VERBOSE
  • toute (*) activité - VERBOSE
  • toute balise commençant par Xyz (*) - ERREUR
  • System.out - SILENCIEUX (puisque j'utilise Log dans mon propre code)

Voici ce que je tape dans le terminal:

$  adb logcat *View:V *Activity:V Xyz*:E System.out:S
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.