Search code examples
androidlogcat

Any way to grab a snapshot of current logcat output without opening up the output stream?


I'm trying to grab some filtered output from logcat through command line, but would prefer to not have a logcat stream opened up for automation purposes.

Here's my use case: I want to clear logcat, perform some instrumentation tests with AccessibilityChecks enabled, then check logcat for Accessibility errors that the class has found in my UI.

Currently, here's what I can do via command line:

//clear logcat history:
adb logcat -c 
// Run instrumentation tests at this time. 
// Run following command when tests done: 
adb logcat AccessibilityValidator:E *:S
// ctrl-c to close stream

This does what it is supposed to. I will see just the Accessibility errors printed out. The problem is that I do not want to open up a logcat stream. I'd like to get the results as is, right at the point that my instrumentation tests have completed. Opening up a stream is not very ideal as I would then need to pipe in a ctrl-C to my pipeline to close the stream. I would really like to get a snapshot of the output in plain text. Is such a thing possible?

Thank you!

Edit: I was able to find what I believe is a working solution - I just needed to add the -d flag. This will not open a stream and will print the contents of the logcat file. Combine with my filtering, I am able to get exactly what I was looking for.


Solution

  • I was able to find what I believe is a working solution - I just needed to add the -d flag. -d will dump the logs and exit. This will not open a stream and will print the contents of the logcat file to stdout. Combine with my filtering, I am able to get exactly what I was looking for.

    The command I needed is:

     adb logcat -d AccessibilityValidator:E *:S