This is not only for test development. When I report failures to developers, they want to know, what happened. They don't want to see "Now we are creating 20 machines", but they want to see "20 machines like 'qemu-kvm -blabla -bla $NUM'" are being created. And instead of "Now we are hotplugging disk stg1" they want to see "vm1-monitor: device_add ...". Because they can follow that slowly and see the problem.

Simulating the output in separate run is "almost" impossible as usually you interact with the tested "black box" and base your next commands on the response.

About the internal logger, which would store everything in memory and in case of failure printed it out, it could be doable. I'd insist on printing the complete log again as combination of the commands put in the correct location.