2014-09-05 19 views
0

我在webapp(servlet spec 2.5)中使用了log4j 2和MongoDBAppender。Log4j2在webapp中:MongoCleaner线程创建内存泄漏

这里的web.xml文件:

<listener> 
    <listener-class>org.apache.logging.log4j.web.Log4jServletContextListener</listener-class> 
</listener> 
<filter> 
    <filter-name>log4jServletFilter</filter-name> 
    <filter-class>org.apache.logging.log4j.web.Log4jServletFilter</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>log4jServletFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
    <dispatcher>REQUEST</dispatcher> 
    <dispatcher>FORWARD</dispatcher> 
    <dispatcher>INCLUDE</dispatcher> 
    <dispatcher>ERROR</dispatcher> 
    <dispatcher>ASYNC</dispatcher><!-- Servlet 3.0 w/ disabled auto-initialization 
     only; not supported in 2.5 --> 
</filter-mapping> 

这里log4j2配置:

<Configuration status="warn"> 
    <Properties> 
     <Property name="MongoDbServer">$${jndi:MongoDB.serverAddress.1.host}:$${jndi:MongoDB.serverAddress.1.port}</Property> 
     <Property name="MongoDbPassword">$${jndi:MongoDB.password}</Property> 
    </Properties> 
    <Appenders> 
     <NoSql name="databaseAppender"> 
      <MongoDb databaseName="LOGS" collectionName="test" 
       server="${MongoDbServer}" username="LOGS" password="${MongoDbPassword}" /> 
     </NoSql> 
     <Async name="Async"> 
      <AppenderRef ref="databaseAppender" /> 
     </Async> 
    </Appenders> 
    <Loggers> 
     <Root level="info"> 
      <AppenderRef ref="Async" /> 
     </Root> 
    </Loggers> 
</Configuration> 

当我undeply web应用程序,出现此错误日志:

SEVERE: A web application appears to have started a thread named [MongoCleaner665622824] but has failed to stop it. This is very likely to create a memory leak. 

什么建议吗?

谢谢。

回答

0

您可能已经找到了错误。你可以在log4j2 Jira问题跟踪器中提出这个问题吗?

+0

完成,创建问题https://issues.apache.org/jira/browse/LOG4J2-817。 – fmerighi 2014-09-08 12:30:06

0

确保关闭com.mongodb.MongoClient的所有实例。例如:

MongoClient mongoClient= new MongoClient(); 

// Do something 

mongoClient.close();