2015-01-15 7 views
6

Ho letto già this article. Ma sembra che la maggior parte del testo che mostra non sia nella mia applicazione. Come posso filtrare il messaggio e lasciare che mostri solo il log per la mia applicazione. In un'altra parola, voglio mostrarlo come quello di Android Studio (mostra solo il log degli errori dalla mia app, mostrando timestamp, ecc.):Leggi logcat a livello di codice per un'applicazione

Ho provato qualcosa come "logcat -d -v time", ma non funziona Qualche idea? Grazie.

enter image description here

+1

È sempre possibile analizzare le linee da logcat se stessi e ignorare qualsiasi tag non si desidera. –

risposta

15

Prova seguente codice per ottenere i registri di solo l'applicazione.

public final class MyAppLogReader { 

    private static final String TAG = MyAppLogReader.class.getCanonicalName(); 
    private static final String processId = Integer.toString(android.os.Process 
      .myPid()); 

    public static StringBuilder getLog() { 

     StringBuilder builder = new StringBuilder(); 

     try { 
      String[] command = new String[] { "logcat", "-d", "-v", "threadtime" }; 

      Process process = Runtime.getRuntime().exec(command); 

      BufferedReader bufferedReader = new BufferedReader(
        new InputStreamReader(process.getInputStream())); 

      String line; 
      while ((line = bufferedReader.readLine()) != null) { 
       if (line.contains(processId)) { 
        builder.append(line); 
        //Code here 
       } 
      } 
     } catch (IOException ex) { 
      Log.e(TAG, "getLog failed", ex); 
     } 

     return builder; 
    } 
} 

Modifica

Aggiungi sotto l'autorizzazione al AndroidManifest file di

<uses-permission android:name="android.permission.READ_LOGS" /> 
+1

qual è la latenza per la lettura dei registri? – Sid

+3

Ho modificato il tuo post aggiungendo il parametro da riga di comando -d a logcat, altrimenti la funzione non ritorna mai, aspetta e aggiunge più righe di registro man mano che vengono pubblicate. Inoltre, con le versioni più recenti di Android (penso da Jellybean in su) e senza accesso root, sono incluse solo le voci logcat generate dal proprio pacchetto dell'app. – gregko

+0

@gregko grazie per la modifica :) –