web-dev-qa-db-fra.com

android logcat enregistre le message d'expiration de la ligne du module chatty

Je reçois beaucoup de ce type de messages logcat liés à mon application.

11-19 19:04:23.872 3327 3440 I chatty : uid=10085 com.xxxx.yyy expire 18 lines

Quels sont ces messages de journal? Me manque-t-il ici mes journaux d'application logcat réels?

54
AndRSoid

Oui, cela indique que certains messages ne sont pas inclus dans le journal, peut-être parce que d'autres applications lui envoient trop de messages.

Cela semble être une nouveauté dans le liblog de Marshmallow (?). Impossible de trouver une explication claire de la nouvelle politique de journalisation, ou même s’il en existe une, mais le changement est en quelque sorte mentionné ici :

Nous avons déclaré une application trop bavarde une fois que celle-ci enregistre plus de 5 lignes à la seconde. Veuillez créer un bogue contre le propriétaire de l'application qui produit ce spam de journalisation de classe de développeur-verbose-debug-level. Les journaux ont une taille de 256 Ko, ce qui signifie que l’application crée une attaque par le DOS et réduit le temps de traitement des journaux à 6 secondes (!), Ce qui le rend inutilisable pour tous les autres.

Je souhaite ajouter une autre réponse car aucune des réponses existantes ne répondait réellement à la question ' Les fichiers de logcat de ma demande me manquent-ils ici?'.

Oui, vous manquez les journaux. Dès que l'application a été considérée comme "bavarde" par logcat (plus de 5 lignes par seconde), les journaux de votre application seront réduits.

Vous pouvez éviter ce problème en inscrivant votre application dans la liste blanche pour logcat:

adb logcat -P '<pid or uid of your app>'

Vous pouvez imprimer les listes noire et blanche actuelles en exécutant:

adb logcat -p

Cette commande est également utile pour imprimer les statistiques de logcat:

adb logcat -S

De plus, j'ai trouvé utile de mettre automatiquement mon application en liste blanche pour logcat directement à partir du code lors des tests:

int pid = Android.os.Process.myPid();
String whiteList = "logcat -P '" + pid + "'";
Runtime.getRuntime().exec(whiteList).waitFor();

Plus d'informations peuvent être trouvées dans la documentation officielle de logcat ici

34
Anton Malmygin

Vous pouvez désactiver ce comportement en utilisant:

adb logcat -P ""
8
Dan Schmitt

Vous pouvez désactiver ce comportement en utilisant:

adb logcat -P ""

ou en mettant

setprop ro.logd.filter disable

setprop persist.logd.filter disable 

Vous pouvez vérifier le code à

http://androidxref.com/7.1.2_r36/xref/system/core/logd/LogWhiteBlackList.cpp

5
nkalra0123