有没有办法将 logcat 的输出重定向到 InputStream 或类似的东西?我正在考虑如何在 C 中重定向 stderr。我想这样做,以便在我的应用程序启动时重定向它,并且所有发生的事情都被转储到文件中。
问问题
12066 次
5 回答
7
如果你可以连接设备进行调试,你可以从命令行
$ adb logcat > textfile.txt
于 2012-10-22T07:51:04.237 回答
3
我发现最简单的方法是使用System.setErr
. 我允许您轻松地将错误输出重定向到文件。
例子:
System.setErr(new PrintStream(new File("<file_path>"))
于 2013-06-06T07:44:23.923 回答
0
仅从您的应用程序中过滤 logcat 试试这个:
int pid = android.os.Process.myPid();
File outputFile = new File(Environment.getExternalStorageDirectory() + "/logcat.txt");
Log.d("zzz","outputFile: " + outputFile);
try {
String command = "logcat | grep " + pid + " > " + outputFile.getAbsolutePath();
Log.d("zzz","command: " + command);
Process p = Runtime.getRuntime().exec("su");
OutputStream os = p.getOutputStream();
os.write((command + "\n").getBytes("ASCII"));
} catch (IOException e) {
}
于 2014-11-17T13:36:36.587 回答
0
在 Kotlin 中,这是我使用的,它似乎创建并记录到 logcat.txt 文件(位于 app 目录中),无论是调试应用程序还是直接从平板电脑运行。(旁注:由于某种原因,在我停止应用程序并重新连接设备之前,该目录不会刷新或显示在文件资源管理器中。)(感谢之前贡献者的帮助)
located in utilities...
val publicDirectory = globalContext.getExternalFilesDir(null)
publicDirectoryName = publicDirectory?.toString() + "/"
fun redirectLogcatToFile() {
try {
val filename =
File(Utilities.publicDirectoryName + "logcat.txt")
filename.createNewFile()
val cmd = "logcat -v time -f " + filename.getAbsolutePath() +" -s " + logcatTag
Runtime.getRuntime().exec(cmd)
} catch (ex: Exception ) {
Utilities.toastOnAnyThread("Utilities.redirectLogcatToFile: " + ex.message)
}
}
fun Log( message : String ){
Log.i(logcatTag, message )
}
于 2020-12-28T17:39:39.017 回答