2010-01-04 8 views
20

Dato che stiamo usando logcat come console per Android. Ci sono casi in cui l'output text/msg è abbastanza grande e non riesco a vedere l'output completo. Il gatto di registro mostra solo la parte iniziale di esso. C'è un modo per espanderlo in modo che possa vedere il messaggio completo?Come posso vedere testi lunghi/msg in logcat?

+1

yeah .. solito copiarlo un editor di testo da DDMS – Samuh

+0

Penso che questo sia l'unico modo per uscire – Bohemian

+1

ma non u può copiare l'intero testo fino alla fine se di grandi dimensioni. Il messaggio viene rimosso alla fine. – Bohemian

risposta

3

Se si desidera scrivere messaggi lunghi per vedere in logcat, potrebbe valere la pena di scrivere il proprio wrapper attorno ai metodi android.util.Log che suddividono il messaggio lungo su più righe.

+0

Intendi dire così: chiama Log.v all'interno di una funzione personalizzata? – OneWorld

+1

@OneWorld - Sì, chiama Log.v un certo numero di volte passandogli diverse parti del messaggio. –

10

Non utilizzo mai la GUI per visualizzare l'output di logcat, quindi non sono sicuro di dove/ci siano barre di scorrimento nell'interfaccia utente di DDMS/Eclipse.

In ogni caso, è possibile utilizzare logcat dalla riga di comando — ci sono un sacco di opzioni.

Per guardare il registro di un dispositivo attivo di continuo: adb logcat
per scaricare l'intero registro: adb logcat -d
per scaricare l'intero registro in un file: adb logcat -d > log.txt
Per filtrare e visualizzare un particolare tag registro: adb logcat -s MyLogTag

... e molto altro!

+1

Non vedo come questo possa aiutare qualcuno, eppure ha molti voti. I [messaggi logcat vengono troncati sul dispositivo] (http://stackoverflow.com/a/8899735/253468), quindi anche se leggi la console via, stai leggendo il testo troncato. C'è un'opzione nascosta in "... e molto altro!" non stai dicendo? – TWiStErRob

2

Ovviamente, è possibile modificare la larghezza della colonna, semplicemente andando alla fine della linea facendo clic e trascinando. Questo è un dolore per i messaggi veramente lunghi. Se ho un messaggio molto lungo, in genere copio la riga e la incollo in un file di testo. Ctrl-C in Windows lo copierà.

+2

Logcat rimuove il testo dalla fine se il messaggio è lungo. Non registra il messaggio completo. Quindi, quando lo copio, anche il testo viene rimosso – Bohemian

0

Per aggiungere alla risposta di Jay Askren, è anche possibile fare doppio clic sul bordo destro dell'intestazione della colonna "testo" per espanderla completamente. Ho notato che anche così c'è un limite al numero di caratteri visualizzati da Eclipse.

15

Questo è il modo in cui ho risolto il problema. Spero che sia d'aiuto.

Il metodo importante per utilizzarlo nel codice è splitAndLog.

public class Utils { 
    /** 
    * Divides a string into chunks of a given character size. 
    * 
    * @param text     String text to be sliced 
    * @param sliceSize    int Number of characters 
    * @return ArrayList<String> Chunks of strings 
    */ 
    public static ArrayList<String> splitString(String text, int sliceSize) { 
     ArrayList<String> textList = new ArrayList<String>(); 
     String aux; 
     int left = -1, right = 0; 
     int charsLeft = text.length(); 
     while (charsLeft != 0) { 
      left = right; 
      if (charsLeft >= sliceSize) { 
       right += sliceSize; 
       charsLeft -= sliceSize; 
      } 
      else { 
       right = text.length(); 
       aux = text.substring(left, right); 
       charsLeft = 0; 
      } 
      aux = text.substring(left, right); 
      textList.add(aux); 
     } 
     return textList; 
    } 

    /** 
    * Divides a string into chunks. 
    * 
    * @param text     String text to be sliced 
    * @return ArrayList<String> 
    */ 
    public static ArrayList<String> splitString(String text) { 
     return splitString(text, 80); 
    } 

    /** 
    * Divides the string into chunks for displaying them 
    * into the Eclipse's LogCat. 
    * 
    * @param text  The text to be split and shown in LogCat 
    * @param tag  The tag in which it will be shown. 
    */ 
    public static void splitAndLog(String tag, String text) { 
     ArrayList<String> messageList = Utils.splitString(text); 
     for (String message : messageList) { 
      Log.d(tag, message); 
     } 
    } 
} 
Problemi correlati