2015-01-15 9 views
6

私はすでにthis articleと読みました。しかし、それは私のアプリケーションではないことを示すテキストのほとんどのようだ。メッセージをフィルタリングして、アプリケーションのログのみを表示させるにはどうすればよいですか。言い換えれば、私はAndroidスタジオ(私のアプリからのエラーログを表示し、タイムスタンプを表示するなど)のように表示したい:logcatをプログラムでアプリケーションで読む

"logcat -d -v time"のようなものを試した動作しません。何か案が?ありがとう。

enter image description here

+1

に許可の下に追加します。 –

答えて

15

のみ、アプリケーションのログを取得するには、次のコードを試してみてください。

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

編集

あなたは常に自分自身logcatからのラインを解析し、あなたがしたくない任意のタグを無視することができますAndroidManifestファイル

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

ログを読み取るための待ち時間はどのくらいですか? – Sid

+3

logcatに-dコマンドラインパラメータを追加して投稿を編集しました。そうしないと、関数は返されず、投稿されたログラインをさらに待って追加します。また、Androidの新しいバージョン(私はJellybeanから考えている)の下で、ルートアクセスなしでは、自分のアプリケーションパッケージによって生成されたlogcatエントリだけが含まれています。 – gregko

+0

@repko編集のためにありがとう:) –

関連する問題