我想将我的应用程序 logcat 事件保存在 sd 卡上的文本文件中。我的令人震惊的应用程序在我和我朋友的设备上正常运行,但其他应用程序在我的应用程序上出现错误。例如,他们说应用程序中的警报时间错误,但我在我和我朋友的设备中没有看到这个错误。由于这个问题和其他问题,我想以原子方式保存与我的应用程序相关的所有事件 logcat。所以他们将日志文件发送给我以解决问题。我怎样才能做到这一点?谢谢对不起我的英语不好
问问题
2579 次
5 回答
3
您可以通过以下方式获取 logcat:
static final int BUFFER_SIZE = 1024;
public String getLogCat() {
String[] logcatArgs = new String[] {"logcat", "-v", "time"};
Process logcatProc = null;
try {
logcatProc = Runtime.getRuntime().exec(logcatArgs);
}
catch (IOException e) {
return null;
}
BufferedReader reader = null;
String response = null;
try {
String separator = System.getProperty("line.separator");
StringBuilder sb = new StringBuilder();
reader = new BufferedReader(new InputStreamReader(logcatProc.getInputStream()), BUFFER_SIZE);
String line;
while ((line = reader.readLine()) != null) {
sb.append(line);
sb.append(separator);
}
response = sb.toString();
}
catch (IOException e) {
}
finally {
if (reader != null) {
try {
reader.close();
}
catch (IOException e) {}
}
}
return response;
}
然后,您可以将其保存String
到 SD 卡。
于 2013-01-19T21:53:52.893 回答
1
ACRA Android 库已经实现了这种类型的功能。该库检测崩溃,并将崩溃信息发送到 Google Docs 电子表格或您自己的目的地。
于 2013-01-19T21:51:58.963 回答
1
您可以通过以下方式获取 logcat:
static final int BUFFER_SIZE = 1024;
public String getLogCat() {
String[] logcatArgs = new String[] {"logcat", "-v", "time"};
Process logcatProc = null;
try {
logcatProc = Runtime.getRuntime().exec(logcatArgs);
}
catch (IOException e) {
return null;
}
BufferedReader reader = null;
String response = null;
try {
String separator = System.getProperty("line.separator");
StringBuilder sb = new StringBuilder();
reader = new BufferedReader(new InputStreamReader(logcatProc.getInputStream()), BUFFER_SIZE);
String line;
while ((line = reader.readLine()) != null) {
sb.append(line);
sb.append(separator);
}
response = sb.toString();
}
catch (IOException e) {
}
finally {
if (reader != null) {
try {
reader.close();
}
catch (IOException e) {}
}
}
return response;
}
然后,您可以将其保存
String
到 SD 卡。
“Dororo”的这个答案对我不起作用,因为它总是因为很多行而陷入困境,但我不知道如何解决这个问题。
于 2013-02-15T08:53:28.390 回答
1
除非您指定“-d”参数,否则 logcat 将阻止读取新日志。
尝试
String[] logcatArgs = new String[] {"logcat", "-d", "-v", "time"};
于 2013-02-28T05:53:40.803 回答
1
在线程内执行以避免 ANR
于 2015-06-14T07:28:25.063 回答