[
https://issues.apache.org/jira/browse/LOG4J2-705?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Remko Popma resolved LOG4J2-705.
--------------------------------
Resolution: Fixed
Fix Version/s: 2.0
Fixed in revision 1609903.
Please verify and close.
> 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: [email protected]
For additional commands, e-mail: [email protected]