[
https://issues.apache.org/jira/browse/LOG4J2-903?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14218146#comment-14218146
]
Ralph Goers commented on LOG4J2-903:
------------------------------------
Thanks for the info on how Tomcat behaves. I think your solution makes sense.
A WeakReference is used to allow undeployment to work. The weak reference won't
cause the LoggerContext or the ClassLoader to be garbage collected under memory
pressure as they each have other hard references to them. It simply allows the
ClassLoader to be released when the web app is undeployed. Of course, the
LoggerContext should be shutdown when this happens as well.
> ClassLoaderContextSelector uses ClassLoader.toString() as a key
> ---------------------------------------------------------------
>
> Key: LOG4J2-903
> URL: https://issues.apache.org/jira/browse/LOG4J2-903
> Project: Log4j 2
> Issue Type: Bug
> Components: Core
> Affects Versions: 2.1
> Reporter: Mauro Molinari
>
> {{org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.locateContext(ClassLoader,
> URI)}} uses the {{ClassLoader.toString()}} as a key to find a context in the
> {{CONTEXT_MAP}}. However, there are cases in which this string may change
> with time, for the same class loader instance.
> The example is the Tomcat class loader, which changes its {{toString()}}
> value whenever a transformer is added (to do load time weaving).
> I discovered this when I encountered the problem described at:
> http://stackoverflow.com/questions/27016854/tomcatloadtimeweaver-breaks-log4j-2
> This phenomenon leads to the webapp completely "lose" the Log4j configuration.
> I think the {{hashCode()}} or even the {{System.identityHashCode()}} should
> better fit the necessity to reliably retrieve a context associated with a
> class loader. And what about using the class loader itself as the map key?
> By the way, the use of a {{WeakReference}} further concerns me about the
> reliability of the context lookup when the memory pressure is high...
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]