
On Thu, Jan 1, 2009 at 6:51 AM, Andrey Semashev <andrey.semashev@gmail.com> wrote:
2. You will have to write an "if" around the streaming statement. That "if" will check the filters in run time and decide whether the record will be processed or not. You can wrap it into a macro, but it will be there, and it will not be zero-cost in terms of performance and code size.
With risk of being annoying, I'll second my earlier post about "the if" in question. :) I'd rather have "the if" out of any macros and fully visible in user code. That way it would be clear what enables or disables the logging statement itself, and what functions are called and when. In a simple case, you'd simply write: if( logging::severity>=2 ) log() << "whatever: " << whatever(); and you'll know that the function wouldn't be called if logging::severity is below 2. In more complex conditions, users can decide to separate the condition in a predicate: if( logging_connections() ) log() << "server: connection from " << connection.ip(); where: bool logging_connections() { return (server_logging::connections || client_logging::connections) && logging::severity>=1; } Emil Dotchevski Reverge Studios, Inc. http://www.revergestudios.com/reblog/index.php?n=ReCode