我希望将我的Android应用程序日志保存在文本文件中并通过电子邮件发送,以便处理异常和反馈。我在我的应用程序中实现了以下代码,但是日志文本文件不包含任何内容,在执行代码后为空。
try {
Process process = Runtime.getRuntime().exec("logcat -d");
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(process.getInputStream()));
StringBuilder logString = new StringBuilder();
String line;
while ((line = bufferedReader.readLine()) != null) {
logString.append(line);
}
File logFile = new File("sdcard/log.txt");
if (!logFile.exists()) {
try {
logFile.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
BufferedWriter buf = new BufferedWriter(new FileWriter(logFile, true));
buf.append(logString);
buf.newLine();
buf.close();
} catch (IOException e) {
e.printStackTrace();
}
我使用Log.i
,Log.e
和Log.w
在我的整个应用程序中将日志消息写入logcat。
如果有人引导我解决我的问题,我将不胜感激。
答案 0 :(得分:2)
试试这个,
public static void appendLog(String text) {
if (true) {
File root = android.os.Environment.getExternalStorageDirectory();
File dir = new File(root.getAbsolutePath() + "/YourAppName");
dir.mkdir();
File logFile = new File(dir, "YourAppName.txt");
if (!logFile.exists()) {
try {
logFile.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
try {
// BufferedWriter for performance, true to set append to file
// flag
BufferedWriter buf = new BufferedWriter(new FileWriter(logFile,
true));
buf.append(text
+ " - "
+ new SimpleDateFormat("MM/dd/yyyy HH:mm:ss")
.format(new Date()));
buf.newLine();
buf.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
并在您的应用中使用此方法代替Log.i
,Log.e
和Log.w