Android 清除logcat时遇到的问题

Android 清除logcat时遇到的问题,android,logcat,Android,Logcat,我使用Android的日志来监督应用程序的使用,所以我在手机中使用logcat,而不是在Eclipse中 好吧,如果我只是写在日志里,把所有的信息都发送给我,这没关系,但是我从以前的执行中收到了信息。 我决定在每次应用程序启动时清除日志,但现在我通常会丢失第一条日志消息。也许logcat需要一些时间来澄清?因为当我试着去调试一切的时候,一切都是好的 例如: 清除日志、消息1、消息2、消息3 有时我没有收到消息1,有时我没有收到消息1和消息2 我已经检查了所有可能的意外清除代码,但我没有找到任何东

我使用Android的日志来监督应用程序的使用,所以我在手机中使用logcat,而不是在Eclipse中

好吧,如果我只是写在日志里,把所有的信息都发送给我,这没关系,但是我从以前的执行中收到了信息。 我决定在每次应用程序启动时清除日志,但现在我通常会丢失第一条日志消息。也许logcat需要一些时间来澄清?因为当我试着去调试一切的时候,一切都是好的

例如:

清除日志、消息1、消息2、消息3

有时我没有收到消息1,有时我没有收到消息1和消息2

我已经检查了所有可能的意外清除代码,但我没有找到任何东西

我在开始时调用这个函数(在onCreate()中)

下面是我收集日志的方式:

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;
}
ArrayList命令行=新建ArrayList();
命令行。添加(“logcat”);
命令行。添加(“-d”)//卸载和退出
命令行。添加(“-v”)//指定详细模式
命令行。添加(“原始”)//raw仅显示消息,简短表示全部显示
添加(标记+“:V”)//显示标签的日志
命令行。添加(“*:S”)//隐藏他人
Process Process=Runtime.getRuntime().exec(
toArray(新字符串[0]);
BufferedReader BufferedReader=新的BufferedReader(
新的InputStreamReader(process.getInputStream());
字符串行,log=“”;
而((line=bufferedReader.readLine())!=null){
对数+=行+行分隔符;
}
来自for
exec()

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

所以它是在一个单独的进程中运行的。在您开始登录之前,没有一个好的方法来判断它是否已经完成

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

来自for
exec()

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

所以它是在一个单独的进程中运行的。在您开始登录之前,没有一个好的方法来判断它是否已经完成


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

你把“清除日志”代码放在哪里了?添加一些代码来完成问题。添加了我如何清除、编写和收集,对不起。您将“清除日志”代码放在哪里了?添加一些代码来完成问题。添加了我如何清除、写入和收集,对不起。也许你可以按进程id进行筛选?我不确定。希望你能解决这个问题。最后我使用了一个随机标记,并将我需要的标记放入消息中。进程id始终是相同的,因为有时应用程序根本没有被破坏,所以无法工作。非常感谢。也许您可以按进程id进行筛选?我不确定。希望你能解决这个问题。最后我使用了一个随机标记,并将我需要的标记放入消息中。进程id始终是相同的,因为有时应用程序根本没有被破坏,所以无法工作。非常感谢。
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;
}