These are streams that are tied to a particular Logger and priority level. This allows you to do something like:
LoggingStream foo(logger, WARN); foo << "We got: " << anInt << " for a total of: " << anotherInt; foo << " and an average of: " << aFloat << endl;
The advantage being that you don't need to an explicit "if (logger.isEnabled(WARN)) { ... }" wrapper around the formatting code. If the priority is disabled, then the LoggingStream just turns all operator<<()'s into noops, while otherwise it writes to a buffer, which it then flushes and sends on an endl or equivalent io manipulator. You get the efficiency of using the if() to check things, but the logging code doesn't have to take up as much screen realestate now.
I've written up my own implementation of this for log4cxx. It's not perfect, but it's getting there. I wanted to know what everyone else though about this idea.
--Chris
