[ 
https://issues.apache.org/jira/browse/LOG4J2-705?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Martin Frydl closed LOG4J2-705.
-------------------------------


Tested on revision 1610388, works fine. Thanks.

> Async logger loses thread context stack for events
> --------------------------------------------------
>
>                 Key: LOG4J2-705
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-705
>             Project: Log4j 2
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 2.0-rc2
>            Reporter: Martin Frydl
>            Assignee: Remko Popma
>             Fix For: 2.0
>
>         Attachments: async-context-test.zip
>
>
> I've enabled the async logger and created some log message with values in 
> thread context stack. However, the logged message does not contain any of 
> these items.
> Looking at the sources, it seems that AsyncLogger.logMessage() needs to clone 
> the stack instead of using ThreadContext.getImmutableStack() (line 260). This 
> is because getImmutableStack() method returns the same stack as original - 
> getting the real one from thread local storage. So when passed to another 
> thread (as async does), the same stack "looks" into different thread and 
> returns empty list. It is even possible to break this "immutable" stack when 
> you create your own appender and use ThreadContext.push() in append() method. 
> This will affect the message being logged.
> Simple solution is to replace getImmutableStack() method in 
> AsyncLogger.logMessage() (line 260) with ThreadContext.cloneStack(). But I'm 
> not sure if this is the right way.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

---------------------------------------------------------------------
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