web-dev-qa-db-fra.com

Afficher plus de chaîne sur Logcat

Je travaille actuellement sur une application Android qui utilise "JSON" comme réponse du serveur. Habituellement, je travaille sur la réponse JSON. Mais maintenant, j’ai un problème avec logcat, Si la chaîne de réponse JSON est très longue, supérieure à x caractère (je ne sais pas exactement combien représente la chaîne maximale pouvant être affichée par logcat), la chaîne JSON est manquante. 

Bien que cela puisse toujours me donner la sortie, j'ai besoin des informations sur la chaîne JSON transmise par le serveur. 

Est-il possible d'afficher plus de chaîne sur logcat? Comme augmenter la mémoire tampon ou tout paramètre que je pourrais utiliser pour augmenter la longueur de chaîne maximale pouvant être affichée par logcat.

36
bro

Moche mais ça fait le boulot:

public static void longInfo(String str) {
    if(str.length() > 4000) {
        Log.i(TAG, str.substring(0, 4000));
        longInfo(str.substring(4000));
    } else
        Log.i(TAG, str);
}
72
Karussell
if(xml.length() > 4000) {
 for(int i=0;i<xml.length();i+=4000){
    if(i+4000<xml.length())
        Log.i("rescounter"+i,xml.substring(i, i+4000));
     else
        Log.i("rescounter"+i,xml.substring(i, xml.length()));
}
} else
Log.i("resinfo",xml);

Voici comment je l'ai fait.

8
Swapnil Mhaske

Certaines de nos API RESTful renvoient des réponses JSON très longues. Voici la méthode qui les formate pour LogCat:

private static final int LOGCAT_MAX_LENGTH = 3950;

...

private void logLongJsonStringIfDebuggable(String s) {
    if (BuildConfig.DEBUG) {
        while (s.length() > LOGCAT_MAX_LENGTH) {
            int substringIndex = s.lastIndexOf(",", LOGCAT_MAX_LENGTH);
            if (substringIndex == -1)
                substringIndex = LOGCAT_MAX_LENGTH;
            Log.d(TAG, s.substring(0, substringIndex));
            s = s.substring(substringIndex).trim();
        }
        Log.d(TAG, s);
    }
}
2
TheGraeme

si vous n'utilisez pas Eclipse ou @ zanne, la réponse ne fonctionne pas pour vous. Je ne peux penser qu'à deux solutions:

  1. Mieux mais plus complexe, je suppose que votre JSON est composé d’une sorte de "itérables" (objets et/ou tableaux JSON), vous pouvez donc analyser et parcourir le JSON et imprimer chaque élément du LogCat
  2. Plus facile mais aussi plus laid, divisez la chaîne JSON en sous-chaînes et imprimez chaque sous-chaîne dans LogCat (vous pouvez trouver différentes façons de fractionner une chaîne ici )

edit: Une autre possibilité: écrivez le fichier JSON dans un fichier de la carte SD comme un journal, puis récupérez le fichier lorsque vous souhaitez vérifier la réponse.

1
maid450

pourquoi ne pas utiliser logcat à partir d'une ligne de commande?

Je doute que ce soit ce que vous attendez, mais pourquoi ne pas essayer?

émettre la commande 

./adb -e logcat

depuis le répertoire qui a adb. ceci est pour l'émulateur. remplacez -e par -d pour un périphérique

0
Aman Alam