如何以编程方式从logcat连续获取日志?

时间:2015-06-06 13:59:35

标签: android adb

我使用logcat使用以下程序获取android日志:

Process process=runtime.exec("logcat"); 
BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(process.getInputStream())); 
FileOutputStream fos=new FileOutputStream("/sdcard/Pictures/logs.txt");
String line; while((line=bufferedReader.readLine())!=null){
        fos.write(line.getBytes()); 
}

但问题是它会立即获取所有日志并写入文件。

但是,我想继续为新日志轮询logcat,并希望在有新日志时将日志写入文件。

你能建议一种方法吗?

2 个答案:

答案 0 :(得分:1)

获取logcat

try {
  Process process = Runtime.getRuntime().exec("logcat");
  BufferedReader bufferedReader = new BufferedReader(
  new InputStreamReader(process.getInputStream()));

  StringBuilder log=new StringBuilder();
  String line = "";
  while ((line = bufferedReader.readLine()) != null) {
    log.append(line);
  }
  TextView tv = (TextView)findViewById(R.id.textView1);
  tv.setText(log.toString());
  } 
catch (IOException e) {}

确保

  • 你在一个单独的线程上运行它
  • 将过滤器应用于日志,因为输出可能是详尽的

http://developer.android.com/tools/debugging/debugging-log.html#outputFormat

答案 1 :(得分:0)

尝试将fos.flush();添加到您的while循环中。

您的周期可能如下所示:

while((line=bufferedReader.readLine())!=null){
    fos.write(line.getBytes());
    fos.flush();
}

这是未经测试的解决方案,所以请告诉我它是否无效。