BTW, I should also note that in stepping through the code, NDC::empty()
returns true so the new NDC is then instantiated.

Could it be that the scope of the IF statement causes it to pop() as soon
as it's push()ed by the ctor?

Chris

On Fri, May 18, 2012 at 3:14 PM, Christopher Nagel <cnagel....@gmail.com>wrote:

> 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