added a comment - - edited
I am a bit unsure of exactly which application use-case is being addressed in this issue;
For the current concurrency effort (MNG-3004) my current favourite strategy is replacing the LoggerManager with a ConcurrentLoggerManager that
provides a MavenProject-aware proxy for the existing logger subsystem. Such a proxy would typically be able to collect all logger output for
the project to a single outputstream, no matter how this intertwines with other builds.
A rough draft of this logic can be seen in LifecycleThreadedBuilder line 164 & 167, where the MavenProject is associated with the current thread (Code is commented out because the current implementation is not good enough). This association changes logger output, and the setThisModuleComplete releases the output.
I fully sense that there may be some other use cases, possibly related to embedding. But it seems like a solution that captures the "logical stream" that constitutes the output from a single build should be expandable to these different cases.
We have a general problem with plexus components that are singletons in that they use
he same logger for their lifespan. This is not good in that many requests may be fired
off and the singleton plexus component will continue to funnel their output to the same
logger. We need to be able to swap the logger.