OceanBlue
OceanBlue

Reputation: 9248

Read logcat from app not working correctly

I am trying to read from the logcat output in my app. I am able to read in correctly, but it goes on reading it in endless loop. Somehow there seems no way to detect the end of stream.

Not sure what I am doing wrong.

Here is my code:

    String baseCommand = "logcat -v time MyTag:D *:S";

    Process process = null;
    try {
        process = Runtime.getRuntime().exec(baseCommand);
        InputStreamReader reader = new InputStreamReader(process.getInputStream());
        BufferedReader bufferedReader = new BufferedReader(reader);
        String line;
        while ((line = bufferedReader.readLine()) != null) {
            Log.d("SomeOtherTag", line); //This line executes endlessly
        }
    } catch (IOException e) {
        Log.e(DEBUG_TAG, "error in logging");
        e.printStackTrace();
    }

Upvotes: 0

Views: 1183

Answers (2)

Yaron Reinharts
Yaron Reinharts

Reputation: 313

Logcat doesn't exit so the buffer is blocked.

Use 'logcat -d' in order to dump the log and then exit.

Hope this still helps, Yaron

Upvotes: 3

Brian Colvin
Brian Colvin

Reputation: 380

Not positive but I believe you need to pass the logcat call if it has args in a String[] so it would be something like

String[] baseCommand = {"logcat", "-v", "time", "MyTag:D", "*:S"};

then the rest of your code.

The single string call is just the program name, not the args.

Upvotes: 1

Related Questions