Как перенаправить вывод моего журнала с logcat на SD-карту на устройство Android?
Я пытаюсь перенаправить журнал моего приложения в файл sdcard. Но я этого не сделал. Я пытаюсь что-то вроде этого.
String cmd= "logcat -v time ActivityManager:W myapp:D *:* >\""+file.getAbsolutePath()+"\"";
Runtime.getRuntime().exec(cmd);
Я также попробовал параметр -f, но он тоже не работает.
Ответы
Ответ 1
используйте logcat -f <filename>
, чтобы выгрузить его в файл в файловой системе.
Убедитесь, что имя файла, которое вы используете, находится в SD-карте, то есть начинается с /sdcard/...
.
Кроме того, чтобы передать аргументы программе logcat
, вы должны передать методу exec
массив строк (а не одну строку):
String[] cmd = new String[] { "logcat", "-f", "/sdcard/myfilename", "-v", "time", "ActivityManager:W", "myapp:D" };
Наконец, если все остальное не работает, используйте полный путь для logcat: /system/bin/logcat
вместо logcat
.
Ответ 2
Это моя работающая версия:
try {
File filename = new File(Environment.getExternalStorageDirectory()+"/logfile.log");
filename.createNewFile();
String cmd = "logcat -d -f "+filename.getAbsolutePath();
Runtime.getRuntime().exec(cmd);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
найдите свой файл журнала/sdcard/logfile.log
Ответ 3
/**
* Launches a logcat process.
* To stop the logcat preserve the use:
* process.destroy();
* in the onBackPressed()
*
* @param filename destination of logcat output
* @return Process logcaat is running on
*/
public Process launchLogcat(String filename) {
Process process = null;
String cmd = "logcat -f " + filename + "\n";
try {
process = Runtime.getRuntime().exec(cmd);
} catch (IOException e) {
process = null;
}
return process;
}
Ответ 4
Попробуйте использовать пробел после каждого элемента в строке. В противном случае он будет рассматривать как одну строку без пробелов и ничего не делать.
Ответ 5
Если вы получаете пустой файл журнала, попробуйте изменить расширение файла с .log
на .txt
.
Ответ 6
public static void saveLogInSDCard(Context context){
String filename = Environment.getExternalStorageDirectory() + File.separator + "project_app.log";
String command = "logcat -d *:V";
try{
Process process = Runtime.getRuntime().exec(command);
BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line = null;
try{
File file = new File(filename);
file.createNewFile();
FileWriter writer = new FileWriter(file);
while((line = in.readLine()) != null){
writer.write(line + "\n");
}
writer.flush();
writer.close();
}
catch(IOException e){
e.printStackTrace();
}
}
catch(IOException e){
e.printStackTrace();
}
}