Comment filtrer Android logcat par application?

Comment puis-je filtrer la sortie Android logcat par application? J’en ai besoin car lorsque je connecte un périphérique, je ne trouve pas le résultat souhaité à cause du spam provenant d’autres processus.

Edit: L’original est ci-dessous. Quand un studio Android n’existait pas. Mais si vous souhaitez filtrer l’ensemble de votre application, j’utiliserais pidcat pour la visualisation des terminaux ou Android Studio. En utilisant pidcat au lieu de logcat, les tags n’ont pas besoin d’être l’application. Vous pouvez simplement l’appeler avec pidcat com.your.application

Vous devriez utiliser votre propre tag, regardez: http://developer.android.com/reference/android/util/Log.html

Comme.

 Log.d("AlexeysActivity","what you want to log"); 

Et puis, quand vous voulez lire l’utilisation du journal>

 adb logcat -s AlexeysActivity 

Cela filtre tout ce qui n’utilise pas la même balise.

Selon http://developer.android.com/tools/debugging/debugging-log.html :

Voici un exemple d’expression de filtre qui supprime tous les messages du journal, à l’exception de ceux avec la balise “ActivityManager”, à priorité “Info” ou supérieure, et tous les messages de journal avec la balise “MyApp”, avec priorité “Debug” ou supérieur:

adb logcat ActivityManager:I MyApp:D *:S

Le dernier élément de l’expression ci-dessus, *: S, définit le niveau de priorité de toutes les balises sur “silent”, garantissant ainsi que seuls les messages de journal avec “View” et “MyApp” sont affichés.

  • V – Verbose (priorité la plus basse)
  • D – Debug
  • I – Info
  • W – Avertissement
  • E – Erreur
  • F – Fatal
  • S – Silencieux (priorité la plus haute, sur laquelle rien n’est imprimé)

Salut j’ai eu la solution en utilisant ceci:

Vous devez exécuter cette commande à partir du terminal. J’ai eu le résultat,

 adb logcat | grep `adb shell ps | grep com.package | cut -c10-15` 

Je travaille sur Android Studio, il y a une bonne option pour obtenir le message en utilisant le nom du paquet. Sur la “Modification de la configuration du filtre”, vous pouvez créer un nouveau filtre en ajoutant le nom de votre package sur le “nom du package”.

entrer la description de l'image ici

Si vous pouviez vivre avec le fait que vous vous connectiez à partir d’une fenêtre de terminal supplémentaire, je pourrais recommander pidcat (prenez uniquement le nom du package et suivez les modifications du PID.)

Supposons que votre application nommée MyApp contienne les composants suivants.

  • MyActivity1
  • MyActivity2
  • MyActivity3
  • MyService

Pour filtrer la sortie de journalisation de votre application MyApp à l’aide de logcat, vous devez taper ce qui suit.

 adb logcat MyActivity1:v MyActivity2:v MyActivity3:v MyService:v *:s 

Toutefois, cela nécessite que vous connaissiez les noms de TAG pour tous les composants de votre application plutôt que de filtrer à l’aide du nom de l’application MyApp. Voir logcat pour plus de détails.

Une solution pour autoriser le filtrage au niveau de l’application consisterait à append un préfixe à chacun de vos TAG uniques.

  • MyAppActivity1
  • MyAppActivity2
  • MyAppActivity3
  • MyAppService

Un filtre de caractères génériques sur la sortie logcat peut maintenant être effectué en utilisant le préfixe TAG.

 adb logcat | grep MyApp 

Le résultat sera la sortie de l’application entière.

mettez ceci à applog.sh

 #!/bin/sh PACKAGE=$1 APPPID=`adb -d shell ps | grep "${PACKAGE}" | cut -c10-15 | sed -e 's/ //g'` adb -d logcat -v long \ | tr -d '\r' | sed -e '/^\[.*\]/ {N; s/\n/ /}' | grep -v '^$' \ | grep " ${APPPID}:" 

alors: applog.sh com.example.my.package

Lorsque nous recevons une erreur de notre application, Logcat affiche automatiquement le filtre de session. Nous pouvons créer un filtre de session par soi-même. Ajoutez simplement un nouveau filtre logcat, remplissez le formulaire de nom du filtre. Ensuite, remplissez le nom de l’application avec votre dossier de candidature. (par exemple: mon application est “Adukan” et le paquet est “com.adukan”, donc je remplis par le nom de l’application avec le package d’application “com.adukan”)

Si vous utilisez Eclipse, vous pouvez filtrer par application, tout comme cela est possible avec Android Studio, tel que présenté par shadmazumder.

Accédez simplement à logcat , cliquez sur Afficher la vue Filtres enregistrés , puis ajoutez un nouveau filtre logcat . Il apparaîtra ce qui suit:

entrer la description de l'image ici

Ensuite, vous ajoutez un nom au filtre et, par nom d’application, vous spécifiez le package de votre application.

Sur mon ordinateur portable Windows 7, j’utilise ‘adb logcat | Recherchez “com.example.name” “pour filtrer la sortie logcat associée au programme système. La sortie du programme logcat est transférée dans la commande find. Chaque ligne contenant “com.example.name” est affichée dans la fenêtre. Les guillemets doubles font partie de la commande find.

Pour inclure la sortie de mes commandes Log, j’utilise le nom du package, ici “com.example.name”, dans le cadre du premier paramètre de mes commandes Log, comme ceci:

 Log.d("com.example.name activity1", "message"); 

Remarque: mon téléphone Samsung Galaxy émet beaucoup moins de sorties que l’émulateur de niveau 17.

Oui, maintenant vous l’obtiendrez automatiquement ….
Mise à jour vers AVD 14 , où le session filter automatique sera logcat
où il filtre log dans votre application spécifique (package)

Sur la gauche de la vue logcat, vous avez les fenêtres “Filtres enregistrés”. Ici, vous pouvez append un nouveau filtre logcat par nom d’application (par exemple, com.your.package)

Ce que je fais habituellement est d’avoir un filtre séparé par PID qui serait l’équivalent de la session en cours. Mais bien sûr, cela change à chaque fois que vous exécutez l’application. Pas bon, mais c’est la seule façon d’avoir toutes les informations sur l’application indépendamment de la balise de journal.

Généralement, je fais cette commande “adb shell ps” dans prompt (permet de voir les processus en cours) et il est possible de découvrir le pid de l’application. Avec ce pid en mains, allez à Eclipse et écrivez pid: XXXX (XXXX est le pid de l’application), puis la sortie est filtrée par cette application.

Ou, plus simplement … dans la vue logcat sur Eclipse, recherchez un mot lié à l’application souhaitée, découvrez le pid, puis effectuez un filtre par pid “pid: XXXX”.

Je l’utilise pour le stocker dans un fichier:

  int pid = android.os.Process.myPid(); File outputFile = new File(Environment.getExternalStorageDirectory() + "/logs/logcat.txt"); try { Ssortingng command = "logcat | grep " + pid + " > " + outputFile.getAbsolutePath(); Process p = Runtime.getRuntime().exec("su"); OutputStream os = p.getOutputStream(); os.write((command + "\n").getBytes("ASCII")); } catch (IOException e) { e.printStackTrace(); } 

C’est probablement la solution la plus simple.

En plus d’une solution de Tom Mulcahy, vous pouvez la simplifier comme ci-dessous:

 alias logcat="adb logcat | grep `adb shell ps | egrep '\bcom.your.package.name\b' | cut -c10-15`" 

L’utilisation est simple comme alias normal. Tapez simplement la commande dans votre shell:

 logcat 

La configuration de l’alias le rend utile. Et le regex le rend robuste pour les applications multi-processus, en supposant que vous vous souciez uniquement du processus principal.

De coz vous pouvez définir plus d’alias pour chaque processus comme vous s’il vous plaît. Ou utilisez la solution de hegazy. 🙂

De plus, si vous souhaitez définir des niveaux de journalisation,

 alias logcat-w="adb logcat *:W | grep `adb shell ps | egrep '\bcom.your.package.name\b' | cut -c10-15`" 

vous pouvez obtenir ceci dans Eclipse logcat en entrant les éléments suivants dans le champ de recherche.

 app:com.example.myapp 

com.example.myapp est le nom du package d’application.

ma fonction .bash_profile, elle peut être utile

 logcat() { if [ -z "$1" ] then echo "Process Id argument missing."; return fi pidFilter="\b$1\b" pid=$(adb shell ps | egrep $pidFilter | cut -c10-15) if [ -z "$pid" ] then echo "Process $1 is not running."; return fi adb logcat | grep $pid } alias logcat-myapp="logcat com.sample.myapp" 

Usage:

$ logcat-myapp

$ logcat com.android.something.app

Dans Android Studio dans la fenêtre Android Monitor: 1. Sélectionnez l’application que vous souhaitez filtrer. 2. Sélectionnez “Afficher uniquement l’application sélectionnée”.

entrer la description de l'image ici

utilisez le premier paramètre comme nom de votre application. Log.d (“votre_nom_application”, “message”);

et dans LogCat: create Filter —> Filter Name & by Log Log: est égal à ‘your_Application_Name’ il va créer un nouvel onglet pour votre application.

Utilisez des noms de classe complets pour vos balises de journal:

 public class MyActivity extends Activity { private static final Ssortingng TAG = MyActivity.class.getName(); } 

alors

 Log.i(TAG, "hi"); 

Ensuite, utilisez grep

 adb logcat | grep com.myapp 

L’application Android Device Monitor disponible sous sdk / tools / monitor a une option logcat pour filtrer ‘par nom d’application’ où vous entrez le nom du package d’application.

Sur Linux / Un * X / Cygwin, vous pouvez obtenir la liste de toutes les balises dans le projet (avec en annexe :V après chaque) avec cette commande (split car readability):

 $ git grep 'Ssortingng\s\+TAG\s*=\s*' | \ perl -ne 's/.*Ssortingng\s+TAG\s*=\s*"?([^".]+).*;.*/$1:V/g && print ' | \ sort | xargs AccelerometerListener:V ADNList:V Ashared:V AudioDialog:V BitmapUtils:V # ... 

Il couvre les balises définies des deux manières de définir des balises:

 private static final Ssortingng TAG = "AudioDialog"; private static final Ssortingng TAG = SipProfileDb.class.getSimpleName(); 

Et puis, utilisez-le simplement pour adb logcat.

J’ai trouvé une application sur le magasin qui peut afficher le nom / processus d’un journal. Comme Android Studio place simplement un (?) Sur les journaux générés par les autres processus, j’ai trouvé utile de savoir quel processus génère ce journal. Mais toujours cette application manque le filtre par le nom du processus. Vous pouvez le trouver ici .

Ajoutez le package de votre application dans “Nom du filtre” en cliquant sur le bouton “+” dans le coin supérieur gauche de logcat.

pour filtrer les journaux sur la ligne de commande, utilisez le script ci-dessous

adb logcat com.yourpackage: v

La sortie du journal de journal peut être filtrée pour afficher uniquement les messages de votre package en utilisant ces arguments.

adb com.your.package: I *: s

Edit – j’ai parlé à bientôt.

 adb com.your.package:v