android clear log programmatically

2019-02-15 04:07发布

I want to get the whole log (Log.d(...)), after pressing a button to analyse some parts of our app (count something...). I'm able to do this by the following code:

HashMap<String, Integer> hashMapToSaveStuff = new HashMap<String, Integer>();
int count= 0;
String toCount= "";
try {
        Process process = Runtime.getRuntime().exec("logcat -d");
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
        String line;
        while ((line = bufferedReader.readLine()) != null) {
            if (line.contains("MYSTRING")) {
                toCount = line.substring(line.indexOf(":") + 1);
                if (hashMapToSaveStuff.containsKey(toCount)) {
                    count = hashMapToSaveStuff.get(toCount);
                    count++;
                } else {
                    count= 1;
                }
                hashMapToSaveStuff.put(toCount, count);
            }
        }
    } catch (Exception e) {

    }

After that I'll send the result to our server and save it on database. Because of that I want to clear all the logs, I've already send. Trying to do this with the following code didn't work:

try {
        Process process = Runtime.getRuntime().exec("logcat -c");
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()), 1024);
        String line = bufferedReader.readLine();
    } catch (Exception e) {

    }

How can I clear the log?

2条回答
Deceive 欺骗
2楼-- · 2019-02-15 04:21

This code has worked for me in the past:

Process process = new ProcessBuilder()
     .command("logcat", "-c")
     .redirectErrorStream(true)
     .start();
查看更多
叼着烟拽天下
3楼-- · 2019-02-15 04:38

This code has work for me correctly which is put into @After case

Process process = new ProcessBuilder() .command("logcat", "-c") .redirectErrorStream(true) .start();

查看更多
登录 后发表回答