2015-01-15 26 views
6

Przeczytałem już this article. Ale wydaje się, że większość tekstu, który pokazuje, nie ma w mojej aplikacji. Jak mogę filtrować wiadomość i niech wyświetla ona tylko dziennik dla mojej aplikacji. Innymi słowy, chcę pokazać to jak w Android Studio (tylko pokazuje dziennik błędów z mojej aplikacji, pokazując znacznik czasu, itp.):Odczytywanie logcat programowo dla aplikacji

Próbowałem coś w stylu "logcat -d -v czasie", ale nie działa. Dowolny pomysł? Dzięki.

enter image description here

+1

AndroidManifest Zawsze można analizować wiersze z logcat siebie i ignorować dowolny znacznik, czego nie chcesz. –

Odpowiedz

15

Spróbuj poniższy kod, aby dostać logi tylko aplikacji.

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

Edit

Dodaj poniżej zezwolenia do pliku

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

jakie jest opóźnienie w czytaniu dzienników? – Sid

+3

Edytowałem twój post przez dodanie parametru wiersza poleceń -d do logcat, w przeciwnym razie funkcja nigdy nie wróci, tylko czeka i dodaje więcej linii dziennika, gdy są one wysyłane. Również w nowszych wersjach Androida (chyba od Jellybean w górę) i bez uprawnień administratora, uwzględniane są tylko wpisy logcat wygenerowane przez Twój własny pakiet aplikacji. – gregko

+0

@regregko dziękuję za edycję :) –

Powiązane problemy