将android logcat数据写入文件

Bri*_*ani 69 logging android

我想在用户想要收集日志时将Android logcat转储到文件中.通过adb工具,我们可以使用日志将日志重定向到文件adb logcat -f filename,但是如何以编程方式执行此操作?

jkh*_*uw1 123

以下是读取日志的示例.

您可以将其更改为写入文件而不是写入文件TextView.

需要许可AndroidManifest:

<uses-permission android:name="android.permission.READ_LOGS" />
Run Code Online (Sandbox Code Playgroud)

码:

public class LogTest extends Activity {
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    try {
      Process process = Runtime.getRuntime().exec("logcat -d");
      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) {
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 此权限已在Android 4.3中删除,因此应用程序无法再在其进程之外使用它.此外,许多设备已经采取了更进一步的步骤,这没有任何输出.我没有列表,因为我经常看到它. (4认同)
  • @ jkhouw1 ... +60我见过的最佳答案以及发布答案的好方法,(我也向你学习)这个答案总是有用的,即使链接已经死了,所有我需要添加Scroll View,我已经完成了我想要什么,因为你的答案,干杯! (2认同)

Sté*_*ane 39

Logcat可以直接写入文件:

public static void saveLogcatToFile(Context context) {    
    String fileName = "logcat_"+System.currentTimeMillis()+".txt";
    File outputFile = new File(context.getExternalCacheDir(),fileName);
    @SuppressWarnings("unused")
    Process process = Runtime.getRuntime().exec("logcat -f "+outputFile.getAbsolutePath());
}
Run Code Online (Sandbox Code Playgroud)

有关logcat的更多信息:请参阅http://developer.android.com/tools/debugging/debugging-log.html

  • logcat -df <file_name>将所有日志接收到<file_name>并立即退出. (5认同)