将 Logcat 从 Android 应用程序保存到 txt 文件

Posted

技术标签:

【中文标题】将 Logcat 从 Android 应用程序保存到 txt 文件【英文标题】:Save Logcat from Android app to txt file 【发布时间】:2016-01-13 23:17:49 【问题描述】:

我正在尝试将我在 android Studio 中看到的所有 logcat(就像这里的 http://i.imgur.com/IJkGcL4.png)直接保存为我的设备上的 txt file

到目前为止我尝试的是onCreate中的这段代码:

File logFile = new File(LogcatDir.getAbsolutePath() + "/log.txt" );
try

    Process process = Runtime.getRuntime().exec( "logcat -c");
    process = Runtime.getRuntime().exec( "logcat -f " + logFile + " *:S MyActivity_BUT_WHAT_TO_PUT_HERE");

catch ( IOException e ) e.printStackTrace();

manifest file:

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

我故意做了类似的解析错误

long test = Long.parseLong("z");

但实际上log.txt中只有这个:

--------- beginning of /dev/log/main
--------- beginning of /dev/log/system

有谁知道,我必须编写什么代码,才能得到整个 logcat?

【问题讨论】:

注意READ_LOGS不适用于Android 4.1及更高版本的普通Android SDK应用:commonsware.com/blog/2012/07/12/read-logs-regression.html 尽量不要调用“logcat -c”,因为它会刷新它 这篇文章可能会有所帮助:***.com/questions/1756296/… @ivan 我不会再打电话给logcat -c 所以我想我不会删除文件 我最好的猜测是,由于您首先执行 logcat -c 它会刷新日志然后保存它,因此请使用 Log.w("Before the flush","-c") Log 进行测试.w("After the flush","-f") 看看会发生什么 【参考方案1】:

这对我有用,它使用以下代码将其保存在主存储中:

Log.w("before","Logcat save");
try 
  Process process = Runtime.getRuntime().exec("logcat -d");
  process = Runtime.getRuntime().exec( "logcat -f " + "/storage/emulated/0/"+"Logging.txt");
catch(Exception e)

  e.printStackTrace();

【讨论】:

没有问题 :D @Pixel_95 @ivan 这不需要 吗? 哦,根据谷歌的video。 JellyBean 及更高版本允许未经许可读取您自己的应用程序的系统日志。我希望这个声明被更多地抛出。 需要注意的是:exec 命令不会自动为任何想要执行“.../logs/log.txt”的人创建目录,您必须事先创建它。

以上是关于将 Logcat 从 Android 应用程序保存到 txt 文件的主要内容,如果未能解决你的问题,请参考以下文章

Android - 将 logcat 保存到文件并限制文件大小

如何把android开发的时候把LogCat里的内容复制出来?如果不能复制,要是转储到文件中请说明详细步骤?

无法在 Android 上使用 Cloud Firestore 保存文档

eclipse android Logcat 未显示“已保存的过滤器”面板

如何将 LogCat 从 DDMS 定向到文件

[转载]起动service保存android系统log( logcat服务)