2015-01-15 9 views
6

Ich habe this article bereits gelesen. Aber es scheint, dass der meiste Text, den er zeigt, nicht in meiner Anwendung ist. Wie kann ich die Nachricht filtern und nur das Protokoll für meine Anwendung anzeigen? In einem anderen Wort, ich möchte es wie das in Android Studio zeigen (zeigt nur das Fehlerprotokoll von meiner App, zeigt Zeitstempel, etc):Logcat programmatisch für eine Anwendung lesen

Ich habe versucht, etwas wie "Logcat -d -v Zeit", aber funktioniert nicht. Irgendeine Idee? Vielen Dank.

enter image description here

+1

Sie können jederzeit die Linien von logcat selbst analysieren und ignorieren alle Tag, das Sie nicht wollen. –

Antwort

15

Versuchen nur folgenden Code Protokolle Ihrer Anwendung zu erhalten.

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; 
    } 
} 

bearbeiten

unten Erlaubnis Ihre AndroidManifest Datei hinzufügen

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

Wie hoch ist die Latenzzeit für das Lesen der Protokolle? – Sid

+3

Ich habe Ihren Post bearbeitet, indem ich den Parameter -d der Befehlszeile zu logcat hinzugefügt habe, sonst kehrt die Funktion nie zurück, wartet nur und fügt mehr Protokollzeilen hinzu, wenn sie gepostet werden. Auch unter neueren Android-Versionen (ich denke von Jellybean nach oben) und ohne Root-Zugriff sind nur die Logcat-Einträge enthalten, die von deinem eigenen App-Paket generiert werden. – gregko

+0

@gregko danke für die Bearbeitung :) –

Verwandte Themen