Currently the codebase has a number of mechanisms for generating reports. Usually these reports are generated at the completion of a execution and usually they write out to standard output. Some subsystems write out XML which is nice while most just output formatted text.
We should refactor the codebase so that all the different subsystems use something similar to Reportable class below. This way we could have a consistent mechanism for generating reports, specifying the level of detail and redirecting reports to other files if necessary. (Particularly useful in context of nightly tests).
interface Reportable
{
void reset();
void report(int level, OutputStream out);
}