I had the following code at the beginning of every method of an object:

log4cxx::NDC ndc( m_loggingContext );
LOG4CXX_TRACE(logger, "Doing whatever!") ;

m_loggingContext was set in an init method to be like "Chan 4 / Dev 3".

This worked OK but eventually, if one method called another, I'd get NDC's
in the log (pattern = "<%t>") that were concatenated duplicates, e.g.,

... <Chan 4 / Dev 3 Chan 4 / Dev 3> ... Doing whatever!

Not good.

So, I changed the code to this:

if( log4cxx::NDC::empty() )
log4cxx::NDC ndc( m_loggingContext );
LOG4CXX_TRACE(logger, " Doing whatever!") ;

Now, the logs all show <null> for ALL NDC's, everywhere.

What is the correct way to avoid duplicate NDC's but also get some output?

Thanks,
Chris

Reply via email to