有没有办法将logcat的输出重定向到InputStream或类似的东西?我正在考虑如何在C中重定向stderr。 我想这样做,以便在我的应用程序启动时重定向,并将所有发生的事情转储到文件中。
答案 0 :(得分:3)
如果您可以连接设备进行调试,可以从命令行
进行调试$ adb logcat > textfile.txt
答案 1 :(得分:2)
我找到的最简单的方法是使用System.setErr
。我允许您轻松地将错误输出重定向到文件。
示例:
System.setErr(new PrintStream(new File("<file_path>"))
答案 2 :(得分:1)
LogCat输出的唯一重定向可能性是文档here和here。
无法在应用程序本身中重用LogCat输出。但是,您可以像export it to a file那样问。
答案 3 :(得分: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) {
}
答案 4 :(得分:0)
在 Kotlin 中,这就是我使用的,它似乎创建并记录到 logcat.txt 文件(位于应用程序目录中),无论应用程序是被调试还是直接从平板电脑运行。 (旁注:由于某种原因,在我停止应用程序并重新连接设备之前,该目录不会刷新或显示在文件资源管理器中。)(感谢之前贡献者的帮助)
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 )
}