> -----Original Message----- > From: Curt Arnold [mailto:[EMAIL PROTECTED] > 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