2014-09-05 1 views
0

webapp (servlet spec 2.5)에서 log4j 2와 MongoDBAppender를 사용하고 있습니다. 내가 웹 애플리케이션을 undeply 때webapp의 Log4j2 : MongoCleaner 스레드가 메모리 누수를 만듭니다.

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

,이 오류 로그가 나타납니다 :

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. 

어떤 제안 여기 log4j2 구성

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

다음은 web.xml을

?

감사합니다.

답변

0

버그를 발견했을 수 있습니다. log4j2 Jira 이슈 트래커에서이 문제를 제기 할 수 있습니까?

+0

완료, https://issues.apache.org/jira/browse/LOG4J2-817 문제가 작성되었습니다. – fmerighi

0

com.mongodb.MongoClient의 모든 인스턴스를 닫아야합니다. 예 :

MongoClient mongoClient= new MongoClient(); 

// Do something 

mongoClient.close();