logging-log4cxx-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Curt Arnold <carn...@apache.org>
Subject Re: Use of operator<<
Date Tue, 18 Mar 2008 15:42:11 GMT

On Mar 18, 2008, at 10:25 AM, Stephen Bartnikowski wrote:
> Hi Josh,
> As far as I can tell support was dropped for those macros, which  
> made me sad
> too. But it's not too hard to cook up some macros of your own. I did  
> it like
> this:
> #define LOGGING_DEBUG(message) { \
>   if ((*pLogger)->isDebugEnabled()) {\
>      log4cxx::logstream oss(*pLogger, log4cxx::Level::getDebug());\
>      oss.setLocation(LOG4CXX_LOCATION);\
>      oss << message;\
>      oss.end_message();}}
> This assumes you have the following declared and initialized:
> log4cxx::LoggerPtr* pLogger;
> Hope this helps you out. I don't know if there's an official way for  
> doing
> this.
> - Stephen

Support for operator<< in the logging macros was restored last  
September.  It had been dropped since it was not obvious how to allow  
the macros to work with both wide and byte character strings, but a  
lot of experimentation hopefully results in a reasonable solution that  
avoids the surprising expensive cost of std::basic_ostream  
construction for simple streams and uses the compiler to determine  
whether to use wide characters based on the first argument.

logstream and the insertional operator support inside the LOG4CXX_  
macros serve different goals.  The logstream was designed so you could  
pass it into methods that expected a std::basic_ostream or you could  
perform a complicated set up involving field widths etc and then reuse  
it multiple times.  The insertion operator support is to simplify  
formatting that occurs within the scope of one logging request.

Steven, it would be helpful if you could redefine your current macros  
in terms of the LOG4CXX_ macros and see if there are any unexpected  

I'll add some text to the documentation before building the next  
release candidate.

View raw message