清除logcat的问题(Android)

时间:2013-10-02 11:59:41

标签: android logcat clear

我正在使用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;
}

1 个答案:

答案 0 :(得分:1)

来自exec()的{​​{1}}:

  

在单独的本机进程中执行指定的命令及其参数。

所以它在一个单独的过程中运行。在开始记录之前,确定它是否已经完成并不是一个好方法。

您可以在每次运行时更改日志标记,而不是清除日志。只需使用常规标记,附加一些标识运行的数字,即使只是一个随机数。然后,当您收集日志时,可以按此过滤,只收集您想要的日志。