我在单个tomcat中部署了多个Spring Web应用程序,并将错误消息记录在单个日志文件中。我需要记录请求被命中的webapp的上下文路径。 目前,我必须实现一个servlet过滤器,以便为每个请求设置变量值。必须这样做,因为MDC实例是每个线程。
由于应用程序的上下文路径是常量,有没有办法只设置一次MDC变量?
log4j.appender.LOGFILE.layout.ConversionPattern=%d %X{applicationId} %-5p %c - %m%n
要在MDC中设置applicationId
,我已经定义了一个Servlet过滤器
public class LogFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
MDC.put("applicationId", request.getServletContext().getContextPath());
chain.doFilter(request, response);
}
}
答案 0 :(得分:0)
没有找到任何其他方式,因此问题中提到的代码似乎是唯一的选择。关闭线程。