我正在使用 Android 的日志来监督应用程序的使用,所以我在手机中使用了 logcat,而不是在 Eclipse 中。
好吧,如果我只是在日志中写入并将信息发送给我,一切都可以,但我会收到以前执行的信息。我决定每次应用程序启动时都清除日志,但现在我通常会丢失第一条日志消息。也许 logcat 需要一些时间来清除?因为当我尝试调试一切时,一切正常。
例子:
清除日志,消息 1,消息 2,消息 3,...
有时我没有收到消息 1,有时没有收到消息 1 和 2...
我已经检查了我所有的代码是否可能意外清除,但我没有找到任何东西......
我在开始时调用了这个函数(在 onCreate() 中)
public static void clearLog(){
ArrayList<String> commandLine = new ArrayList<String>();
commandLine.add("logcat");
commandLine.add("-c");//CLEAR
Runtime process = Runtime.getRuntime();
process.exec(commandLine.toArray(new String[0]));
TAG = "";
}
然后我添加日志
log.i(TAG, "message1");
..
log.i(TAG, "messageN");
这就是我收集日志的方式:
ArrayList<String> commandLine = new ArrayList<String>();
commandLine.add("logcat");
commandLine.add("-d");//dump and exit
commandLine.add("-v");//especify verbose mode
commandLine.add("raw");//raw show only the message, brief for show all
commandLine.add(TAG + ":V");//show TAG's log
commandLine.add("*:S");//hide others
Process process = Runtime.getRuntime().exec(
commandLine.toArray(new String[0]));
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(process.getInputStream()));
String line, log = "";
while ((line = bufferedReader.readLine()) != null) {
log += line + LINE_SEPARATOR;
}