J'ai observé que lorsque j'utilise Logcat avec Eclipse avec ADT pour Android, je reçois également des messages de nombreuses autres applications. Existe-t-il un moyen de filtrer cela et d'afficher uniquement les messages de ma propre application.
android
android-logcat
Vinod
la source
la source
Réponses:
Les noms de package sont garantis comme uniques, vous pouvez donc utiliser la
Log
fonction avec la balise comme nom de package, puis filtrer par nom de package :REMARQUE: à partir de Build Tools 21.0.3, cela ne fonctionnera plus car les TAGS sont limités à 23 caractères ou moins.
Log.<log level>("<your package name>", "message");
adb -d logcat <your package name>:<log level> *:S
-d
désigne un périphérique réel et-e
un émulateur. S'il y a plus d'un émulateur en cours d'exécution, vous pouvez utiliser-s emulator-<emulator number>
(par exemple,-s emulator-5558
)Exemple:
adb -d logcat com.example.example:I *:S
Ou si vous utilisez
System.out.print
pour envoyer des messages au journal, vous pouvez utiliseradb -d logcat System.out:I *:S
pour afficher uniquement les appels à System.out.Vous pouvez trouver tous les niveaux de journalisation et plus d'informations ici: https://developer.android.com/studio/command-line/logcat.html
http://developer.android.com/reference/android/util/Log.html
EDIT: On dirait que j'ai un peu sauté le pistolet et vient de réaliser que vous posiez des questions sur logcat dans Eclipse. Ce que j'ai posté ci-dessus est pour utiliser logcat via adb à partir de la ligne de commande. Je ne sais pas si les mêmes filtres sont transférés dans Eclipse.
la source
logcat <your package name>:<log level>
la réponse suggère qu'il est possible d'utiliser le nom du package comme filtre valide. J'ai dû lire la réponse deux fois pour comprendre ce qu'elle dit réellement, donc je recommande simplement de changer la première ligne en quelque chose comme "logcat <tag>:<log level>
où<tag>
peut être le nom de votre package si vous l'avez également utilisé comme baliseandroid.util.Log
"Linux et OS X
Utilisez ps / grep / cut pour saisir le PID, puis grep pour les entrées logcat avec ce PID. Voici la commande que j'utilise:
(Vous pouvez améliorer davantage l'expression régulière pour éviter le problème théorique des lignes de journal non liées contenant le même nombre, mais cela n'a jamais été un problème pour moi)
Cela fonctionne également lors de la correspondance de plusieurs processus.
les fenêtres
Sous Windows, vous pouvez faire:
la source
pid=$(adb shell ps | grep "package-name" | cut -c10-15) && adb logcat | grep $pid
adb logcat | grep `adb shell ps | grep org.videolan.vlc | awk '{print $2")"}'`
adb logcat | findstr com.example.package
adb logcat | grep `adb shell ps | grep com.example.package | tr -s [:space:] ' ' | cut -d' ' -f2`
Depuis Android 7.0, logcat a l'option de filtre --pid et la commande pidof est disponible, remplacez com.example.app par le nom de votre package.
(Terminal Ubuntu / Depuis Android 7.0)
ou
Pour plus d'informations sur la commande pidof:
https://stackoverflow.com/a/15622698/7651532
la source
grep
etfindstr
, mais elles ne filtrent que les journaux avec une certaine valeur excluant beaucoup de messages. Votre réponse est la vraie, affichez tous les journaux de l'application sans exclure le message de journal d'une autre bibliothèque. C'est comme le filtre actuel d'Android Studio. Merci!Ajouter un filtre
Précisez les noms
Choisissez votre filtre.
la source
Pour moi, cela fonctionne sous mac
Terminal
Vous êtes dans le dossier où vous avez
adb
puis tapez la commande ci-dessous dans le terminalIci, il filtrera tous les journaux de
MyTAG
etAndroidRuntime
la source
Log.d("MyTAG", "i am hero"); Log.d("AndroidRunTime", "i am zero");
2) pour la connexion DEBUG à Android$ adb -s RKSCWSOV5SAIEUSC shell;
3)$ logcat MyTAG:V AndroidRuntime:E *:S
4) maintenant, il affichera les détails de MyTAG et les erreurs d'AndroidRuntimeMise à jour du 17 mai
Cela fait quelques années, et les choses ont changé. Et Eclipse n'est plus officiellement pris en charge. Voici donc deux autres approches à jour:
1. Android Studio
Dans la
Android monitor
boîte à outils, vous pouvez filtrer logcat pardebuggable process
. Normalement, lorsque vous développez une application, il s'agit d'un processus débogable. De temps en temps, j'ai des problèmes avec cela, et procédez comme suit:Tools
->Android
->Enable ADB Integration
.S'il était déjà activé, désactivez-le, puis réactivez-le.
Débranchez et rebranchez votre appareil mobile.
Il existe également des options pour filtrer via l'expression régulière et le niveau de débogage
2. logcat-color
Il s'agit d'un joli emballage python
adb logcat
si vous souhaitez utiliser une solution basée sur un terminal. La bonne chose à ce sujet est que vous pouvez enregistrer plusieurs configurations et simplement les réutiliser. Le filtrage partags
est assez fiable. Vous pouvez également filtrer parpackage
pour voir les journaux d'une ou plusieurs applications uniquement, mais vous commencezlogcat-color
juste avant de lancer votre application.Ancienne réponse:
Il semble que je ne puisse pas commenter les réponses précédentes, donc j'en posterai une nouvelle. Ceci est un commentaire de la réponse de Tom Mulcahy , qui montre comment la commande doit changer pour fonctionner sur la plupart des appareils, car la
adb shell ps
colonne PID est variable.REMARQUE: la commande ci-dessous fonctionne pour les cas où vous avez connecté de nombreux appareils. C'est donc
device id
nécessaire. Sinon, vous pouvez simplement omettre les crochets '[', ']'1. Pour connaître la colonne de pid, tapez:
Maintenant, mémorisez le numéro de colonne pour le PID. La numérotation commence à partir de
1
.2. Tapez ensuite ce qui suit:
Mettez simplement la colonne dans laquelle vous avez mémorisé
PUT_COLUMN_HERE
, par exemple$5
Caveat
Chaque fois que vous réexécutez votre application, vous devez réexécuter la 2e commande, car l'application obtient un nouveau PID du système d'exploitation.
la source
Cela a fonctionné pour moi dans git bash:
la source
mettez ceci à applog.sh
puis:
applog.sh com.example.my.package
la source
log.d("TAG", "multine\nlog")
par exemple):adb -d logcat -v long | sed -Ene '/^\[.*'" (${APPID}):"'.*\]/ { N; s/\n/ /; p; :a;' -e 'n; p; s/^.+$/foo/; t a;' -e ' }' | grep -v '^$'
- J'ai omis letr
, je suppose qu'il est nécessaire sur les systèmes Windows, et j'ai mis lesAPPID
parenthèses entre parenthèses pour autoriser plusieurs pids (séparés par|
) .Cela fonctionne pour moi avec le débogage USB:
Connectez l'appareil et utilisez:
adb shell
Utilisez le logcat une fois connecté:
logcat | grep com.yourapp.packagename
la source
Si vous utilisez Android Studio, vous pouvez sélectionner le processus à partir duquel vous souhaitez recevoir des logcats. Voici la capture d'écran.
la source
Log cat has a new option (on by default) which creates an application filter automatically such that only the launched application's output is shown
J'ai écrit un script shell pour filtrer logcat par nom de package, ce qui je pense est plus fiable que d'utiliser
Il utilise / proc / $ pid / cmdline pour trouver le pid réel, puis fait un grep sur logcat
https://gist.github.com/kevinxucs/7340e1b1dd2239a2b04a
la source
Ubuntu: adb logcat -b all -v color --pid = `adb shell pidof -s com.packagename` Avec couleur et journal continu de l'application
la source
adb shell pidof ...
bit n'a pas fonctionné pour moi, donc j'aiadb shell
édité dans l'appareil et j'aitop
copié le PID de mon application là-bas, puis je l'ai remplacé dans votre commandepgrep
au lieu de pidofADT v15 pour Eclipse vous permet de spécifier un nom d'application (qui est en fait la valeur du package dans votre androidmanifest.xml).
J'adore pouvoir filtrer par application, mais le nouveau logcat a un bug avec le défilement automatique. Lorsque vous faites défiler un peu pour consulter les journaux précédents, il revient automatiquement au bas en quelques secondes. Il semble que le défilement à mi-chemin du journal l'empêche de sauter vers le bas, mais cela est souvent inutile.
EDIT: J'ai essayé de spécifier un filtre d'application à partir de la ligne de commande - mais pas de chance. Si quelqu'un comprend cela OU comment arrêter le défilement automatique, faites-le moi savoir.
la source
Utilisation de l'invite de commande Windows:
adb logcat -d | findstr <package>
.* Cela a été mentionné pour la première fois par jj_ , mais il m'a fallu beaucoup de temps pour le trouver dans les commentaires ...
la source
En variante, vous pouvez utiliser le script tiers PID Cat de Jake Wharton. Ce script présente deux avantages majeurs:
De la documentation:
Une sortie ressemble à
la source
Je ne suis pas sûr qu'il existe un moyen de voir uniquement les messages système concernant votre application, mais vous pouvez filtrer en fonction d'une chaîne. Si vous créez un journal dans le programme, vous pouvez simplement inclure un certain mot-clé unique et filtrer en fonction de ce mot.
la source
Essayez: Fenêtre -> Préférences -> Android -> LogCat. Modifiez le champ "Afficher la vue logcat si ..." la valeur "VERBOSE". Ça m'a aidé.
la source
Si vous utilisez Eclipse , appuyez sur le signe vert + dans la fenêtre logCat ci-dessous et mettez votre nom de package (com.example.yourappname) dans la zone par nom d'application . Choisissez également un nom qui vous convient dans la zone Nom du filtre et cliquez sur OK. Vous ne verrez que les messages liés à votre application lorsque le filtre que vous venez d'ajouter est choisi dans le volet gauche du logCat.
la source
Donnez un nom à votre journal. J'ai appelé le mien "wawa".
Dans Android Studio, accédez à Android-> Modifier les configurations de filtre
Tapez ensuite le nom que vous avez donné aux journaux. Dans mon cas, ça s'appelle "wawa". Voici quelques exemples des types de filtres que vous pouvez effectuer. Vous pouvez filtrer par System.out, System.err, Logs ou noms de package:
la source
C'est probablement la solution la plus simple.
En plus d'une solution de Tom Mulcahy, vous pouvez la simplifier davantage comme ci-dessous:
L'utilisation est aussi simple qu'un alias normal. Tapez simplement la commande dans votre shell:
La configuration de l'alias le rend pratique. Et le regex le rend robuste pour les applications multi-processus, en supposant que vous vous souciez uniquement du processus principal.
Bien sûr, vous pouvez définir plus d'alias pour chaque processus à votre guise. Ou utilisez la solution d'Hegazy. :)
De plus, si vous souhaitez définir des niveaux de journalisation, il est
la source
Sur Windows 10, en utilisant Ionic, ce qui fonctionnait très bien pour moi était de combiner 'findstr' avec "INFO: CONSOLE" généré par tous les messages de l'application. Donc, ma commande en ligne de commande est:
la source
J'ai essayé d'utiliser la réponse de Tom Mulcahy mais malheureusement, cela ne fonctionnait pas pour les applications avec plusieurs processus, je l'ai donc modifiée pour répondre à mes besoins.
la source
Utilisez
-s
!La source
la source
En plus de la réponse de Tom Mulcahy , si vous souhaitez filtrer par PID sur la console Windows, vous pouvez créer un petit fichier batch comme ça:
la source
C'est évidemment une question destinée à l'utilisation de Logcat depuis l' extérieur du périphérique développeur, mais si vous souhaitez afficher la sortie Logcat sur le périphérique (par programme), vous avez juste besoin de ceci:
le
*:D
la fin, tous les messages en dessous du niveau du journal de débogage sont filtrés, mais vous pouvez les laisser de côté.Pour diriger la sortie vers, disons, un TextView, voir par exemple ici .
la source
Il est maintenant possible de taper tag: nameofthetag ou app: nameoftheapp pour filtrer sans ajouter de nouveaux filtres à la barre de filtres enregistrée
la source
Dans intelliJ (et probablement aussi dans eclipse), vous pouvez filtrer la sortie logcat par text webview , de sorte qu'il imprime essentiellement tout ce que phonegap produit
la source
Encore une autre variante de Gavriel
applog.sh
avec prise en charge de plusieurs appareils et applications avec plusieurs processus:Usage:
applog.sh com.example.my.package [-s <specific device>]
la source
Sous Linux, cela a fonctionné pour moi:
la source