Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将android logcat数据写入文件_Android_Logging - Fatal编程技术网

将android logcat数据写入文件

将android logcat数据写入文件,android,logging,Android,Logging,每当用户想要收集日志时,我想将Android logcat转储到一个文件中。通过adb工具,我们可以使用adb logcat-f filename将日志重定向到一个文件,但如何以编程方式执行此操作?下面是一个读取日志的示例 您可以将其更改为写入文件而不是TextView 需要在AndroidManifest中获得权限: <uses-permission android:name="android.permission.READ_LOGS" /> Logcat可以直接写入文件: pu

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

下面是一个读取日志的示例

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

需要在AndroidManifest中获得权限:

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

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

有关logcat的更多信息:请参见

,或者您可以尝试此变体

试试看{
最终文件路径=新文件(
getExternalStorageDirectory(),“DBO_logs5”);
如果(!path.exists()){
path.mkdir();
}
Runtime.getRuntime().exec(
“logcat-d-f”+路径+文件分隔符
+“dbo_logcat”
+“.txt”);
}捕获(IOE异常){
e、 printStackTrace();
}
上述方法将所有日志写入该文件。另外,请在清单文件中添加以下权限

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


@jkhouw1+60个我见过的最好答案和发布答案的好方法,(我也从你那里学到了)这个答案将永远有用,即使链接死了,我只需要添加滚动视图,我已经完成了我想要的,因为你的答案,干杯!!太好了。但是有没有办法根据标签过滤这些日志呢?我还没有测试过,但是我想你会把它改成“logcat-d-s YourTagToFilterOn”我们如何放置包名过滤器。这个权限在Android 4.3中被删除了,所以应用程序不能在其流程之外再使用它。此外,许多设备更进一步,但没有输出任何信息。我没有列表,因为我经常看到它。这个命令似乎会暂停,因为logcat-f不会自动退出。有没有办法将日志写入文件并自动退出类似于logcat-d的过程?请尝试在末尾添加一个&make it background.logcat-df将所有日志放入并立即退出。最初使用这种方法后,我改用缓冲读写器,因为-f不能很好地处理文件名中的空格。是的,应该是-df。还要注意:此代码将其转储到外部缓存目录中
public static void writeLogToFile(Context context) {    
    String fileName = "logcat.txt";
    File file= new File(context.getExternalCacheDir(),fileName);
    if(!file.exists())
         file.createNewFile();
    String command = "logcat -f "+file.getAbsolutePath();
    Runtime.getRuntime().exec(command);
}
<uses-permission android:name="android.permission.READ_LOGS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />