Android 将应用程序日志保存到文本文件不起作用
我想将我的android应用程序日志保存在一个文本文件中,并通过电子邮件发送,以便处理异常和反馈。我在应用程序中实现了以下代码,但日志文本文件不包含任何内容,并且在执行代码后为空Android 将应用程序日志保存到文本文件不起作用,android,logging,Android,Logging,我想将我的android应用程序日志保存在一个文本文件中,并通过电子邮件发送,以便处理异常和反馈。我在应用程序中实现了以下代码,但日志文本文件不包含任何内容,并且在执行代码后为空 try { Process process = Runtime.getRuntime().exec("logcat -d"); BufferedReader bufferedReader = new BufferedReader( new InputStr
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
如果有人能指导我解决我的问题,我将不胜感激。试试这个
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
,请尝试此方法
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
,尝试解释更改,以便其他人稍后检查您的答案时能够理解我不明白为什么要将过程
用于附加日志?实际上,当您使用BufferedWriter
时,它会包装现有的Writer并缓冲输出。因此,无需使用过程
和其他方法。只需获取文件并在以前的日志中写入(附加)您的日志。@AbhishekPatel感谢您的快速回答。我使用这个进程访问系统日志。根据您的回答,我将无法跟踪未处理的异常甚至崩溃。只能监视附加的日志。请尝试解释更改,以便其他人稍后检查您的答案时能够理解。我不明白您为什么使用过程
附加日志?实际上,当您使用BufferedWriter
时,它会包装现有的Writer并缓冲输出。因此,无需使用过程
和其他方法。只需获取文件并在以前的日志中写入(附加)您的日志。@AbhishekPatel感谢您的快速回答。我使用这个进程访问系统日志。根据您的回答,我将无法跟踪未处理的异常甚至崩溃。只能监视附加的日志。