서블릿 컨텍스트 리스너를 사용하여 호스트 이름을 MDC 변수로 설정하려고합니다. MDC 변수는 리스너 자체에서만 사용할 수 있지만 다른 서블릿에서 로그를 작성하면 사라집니다. 여기Log4j2 : 서블릿 컨텍스트 리스너를 사용하여 MDC 키를 설정할 수 없습니다.
내 리스너 코드 :
여기public class MdcServletListener implements ServletContextListener {
/** logger. */
private static Logger logger = LoggerFactory
.getLogger(MdcServletListener.class);
/*
* (non-Javadoc)
*
* @see javax.servlet.ServletContextListener#contextDestroyed(javax.servlet.
* ServletContextEvent)
*/
@Override
public void contextDestroyed(ServletContextEvent sContext) {
}
/*
* (non-Javadoc)
*
* @see
* javax.servlet.ServletContextListener#contextInitialized(javax.servlet
* .ServletContextEvent)
*/
@Override
public void contextInitialized(ServletContextEvent sContext) {
try {
ThreadContext.put("LISTENER", "TEST");
logger.info("Inizializzazione variabili mdc completata");
} catch (Exception e) {
logger.error("Inizializzazione variabili mdc fallita", e);
}
}
}
내 web.xml의 :
<listener>
<listener-class>org.apache.logging.log4j.web.Log4jServletContextListener</listener-class>
</listener>
<listener>
<listener-class>MdcServletListener</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>
</filter-mapping>
어떤 제안? 감사합니다. .