logging-log4cxx-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Stephen Bartnikowski" <sbartnikow...@barkinglizards.com>
Subject RE: Use of operator<<
Date Tue, 18 Mar 2008 17:45:09 GMT
> -----Original Message-----
> From: Curt Arnold [mailto:carnold@apache.org] 
> Sent: Tuesday, March 18, 2008 10:42 AM
> To: Log4CXX User
> Subject: Re: Use of operator<<
> 
> 
> 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 problems.
> 
> I'll add some text to the documentation before building the 
> next release candidate.


Curt,

Everything seems to build and run fine if I replace the macro I mentioned
above with:

#define LOGGING_DEBUG(message) LOG4CXX_DEBUG((*pLogger), message)

Thanks,
Stephen


Mime
View raw message