[ https://issues.apache.org/jira/browse/LOG4J2-323?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Remko Popma updated LOG4J2-323: ------------------------------- Fix Version/s: (was: 2.1) 2.2 I've looked at this and I don't think it is possible to clear the ThreadLocals held by AsyncLogger. There is no {{ThreadLocal.clear()}} method that would remove the data held for all threads, only a {{remove}} method that would remove the data held for the current thread. So basically this issue depends on the fix for LOG4J2-493. Note that there are two workarounds for this issue (similar to LOG4J2-493): * Put the log4j2 jar files in WEB-INF/lib of your web application. * Or: do _not_ use async loggers by setting system property Log4jContextSelector, instead use async loggers by using <AsyncLogger> and <AsyncRoot> in the configuration. Either of the above workarounds will prevent the memory leak. > ThreadLocal-leak on tomcat shutdown when using async logging > ------------------------------------------------------------ > > Key: LOG4J2-323 > URL: https://issues.apache.org/jira/browse/LOG4J2-323 > Project: Log4j 2 > Issue Type: Bug > Affects Versions: 2.0-beta9 > Environment: Mac OS X 10.8.4, Tomcat 7.0.42, java version 1.6.0_51 > Reporter: Michael Kloster > Assignee: Remko Popma > Priority: Minor > Labels: Async > Fix For: 2.2 > > > When shutting down Tomcat 7.0.42, catalina.out displays the following warning > indicating a memory leak: > {code} > Jul 28, 2013 9:55:59 AM org.apache.coyote.AbstractProtocol start > INFO: Starting ProtocolHandler ["http-bio-8080"] > Jul 28, 2013 9:55:59 AM org.apache.coyote.AbstractProtocol start > INFO: Starting ProtocolHandler ["ajp-bio-8009"] > Jul 28, 2013 9:55:59 AM org.apache.catalina.startup.Catalina start > INFO: Server startup in 841 ms > Jul 28, 2013 9:56:09 AM org.apache.catalina.core.StandardServer await > INFO: A valid shutdown command was received via the shutdown port. Stopping > the Server instance. > Jul 28, 2013 9:56:09 AM org.apache.coyote.AbstractProtocol pause > INFO: Pausing ProtocolHandler ["http-bio-8080"] > Jul 28, 2013 9:56:09 AM org.apache.coyote.AbstractProtocol pause > INFO: Pausing ProtocolHandler ["ajp-bio-8009"] > Jul 28, 2013 9:56:09 AM org.apache.catalina.core.StandardService stopInternal > INFO: Stopping service Catalina > Jul 28, 2013 9:56:09 AM org.apache.catalina.loader.WebappClassLoader > checkThreadLocalMapForLeaks > SEVERE: The web application [/asynclog] created a ThreadLocal with key of > type [java.lang.ThreadLocal] (value [java.lang.ThreadLocal@648bfdea]) and a > value of type [org.apache.logging.log4j.core.async.AsyncLogger.Info] (value > [org.apache.logging.log4j.core.async.AsyncLogger$Info@4e26d560]) but failed > to remove it when the web application was stopped. Threads are going to be > renewed over time to try and avoid a probable memory leak. > Jul 28, 2013 9:56:09 AM org.apache.coyote.AbstractProtocol stop > INFO: Stopping ProtocolHandler ["http-bio-8080"] > Jul 28, 2013 9:56:09 AM org.apache.coyote.AbstractProtocol stop > INFO: Stopping ProtocolHandler ["ajp-bio-8009"] > Jul 28, 2013 9:56:09 AM org.apache.coyote.AbstractProtocol destroy > INFO: Destroying ProtocolHandler ["http-bio-8080"] > Jul 28, 2013 9:56:09 AM org.apache.coyote.AbstractProtocol destroy > INFO: Destroying ProtocolHandler ["ajp-bio-8009"] > {code} > {code:xml|title=log4j2.xml|borderStyle=solid} > <?xml version="1.0" encoding="UTF-8"?> > <configuration status="WARN"> > <appenders> > <FastRollingFile name="MyFileLog" filename="logs/my.log" > filePattern="logs/my-%d{COMPACT}.log"> > <PatternLayout pattern="%d %p %c{1.} [%t] %m%n" /> > <Policies> > <SizeBasedTriggeringPolicy size="5MB" /> > </Policies> > </FastRollingFile> > <Console name="Console" target="SYSTEM_OUT"> > <PatternLayout pattern="%d %p %c{1.} [%t] %m%n" /> > </Console> > </appenders> > <loggers> > <logger name="mylogger" level="INFO" additivity="false"> > <appender-ref ref="MyFileLog" /> > </logger> > <root level="TRACE"> > <appender-ref ref="Console" /> > </root> > </loggers> > </configuration> > {code} > {code:title=log4j2.xml|borderStyle=solid} > #!/bin/bash > CATALINA_OPTS=-DLog4jContextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector > {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332) --------------------------------------------------------------------- To unsubscribe, e-mail: log4j-dev-unsubscr...@logging.apache.org For additional commands, e-mail: log4j-dev-h...@logging.apache.org