[ 
https://issues.apache.org/jira/browse/LOG4J2-479?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13861649#comment-13861649
 ] 

Ralph Goers commented on LOG4J2-479:
------------------------------------

Log4j 1.x used an InheritableThreadLocal for the MDC and a Hashtable with the 
current thread as the key for the NDC.  Since the NDC is a Stack it doesn't 
make any sense for multiple threads to manipulate it.  I believe Logback used 
to use an InheritableThreadLocal but does something different now that has the 
same effect (it copies the data from the parent thread).  Our implementation is 
the same is these for compatibility.  This means you will get the same behavior 
when you are using the SLF4J API.  However, this issue has been raised a couple 
of times on the Logback and there are open Jira issues for it.  The most 
logical proposal is one to allow a system property to control whether the child 
inherits from its parent.

> Use of InheritableThreadLocal in Map ThreadContext is dangerous and unhelpful
> -----------------------------------------------------------------------------
>
>                 Key: LOG4J2-479
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-479
>             Project: Log4j 2
>          Issue Type: Bug
>            Reporter: MK
>
> Described here http://logging.apache.org/log4j/2.x/manual/thread-context.html
> The use of InheritableThreadLocal creates subtle and hard to track bugs while 
> not really adding much useful.  It is counterintuitive -- I don't see why 
> would anyone expect logging context to be inherited.  But it breaks down 
> completely when used with Thread Executors.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscr...@logging.apache.org
For additional commands, e-mail: log4j-dev-h...@logging.apache.org

Reply via email to