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?
Logcat is a command-line tool that dumps a log of system messages when the device throws an error and sends messages that you have written from your app with the Log class. This page is about the command-line logcat tool, but you can also view log messages from the Logcat window in Android Studio.
This code has worked for me in the past:
Process process = new ProcessBuilder()
.command("logcat", "-c")
.redirectErrorStream(true)
.start();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With