繁体   English   中英

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

[英]How to fetch logs continuously from logcat programmatically?

我正在使用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以获取新日志,并希望在有新日志可用时将日志写入文件。

您能建议一种方法吗?

取得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

尝试添加fos.flush(); 进入您的while周期。

您的周期可能如下所示:

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

这是未经测试的解决方案,所以让我知道它是否行不通。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM