1
내가 한 수 일반 필터에 스레드 안전한 방법에서의 log4j (SL4J) MDC 컨텍스트를 설정 (http://blog.trifork.com/2013/06/06/adding-user-info-to-log-entries-in-a-multi-user-app-using-mapped-diagnostic-context/에서 코드)의 log4j (SLF4J) MDC 컨텍스트 인터셉터
import org.slf4j.MDC;
import javax.servlet.*;
import java.io.IOException;
public class MDCFilter implements Filter {
@Override
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain)
throws IOException, ServletException {
User user= (User) session.getAttribute("USerSession");
MDC.put("userName", user.getUserName());
try {
chain.doFilter(req, resp);
} finally {
MDC.remove("userName");
}
}
}
수 있다는 것을 발견 Struts 2 인터셉터에서 동일한 접근 방식을 사용합니까? 내가 궁금해하는 것은 스레드 안전 문제입니다.
Struts 2 인터셉터와 서블릿 필터는 스레드로부터 안전하지 않으며 MDC 구현은 스레드로부터 안전합니다. 따라서 위의 코드가 필터에서 정상적으로 작동하면 이론적으로 인터셉터에서 작업 스레드 안전해야합니다.
모든 댓글?!