将上下文路径添加到 SLF4J 日志语句

Adding context path to SLF4J log statements

我在单个 tomcat 中部署了多个 Spring 网络应用程序,并将错误消息记录在单个日志文件中。我需要记录命中请求的 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);
  }
}

没有找到其他方法,所以问题中提到的代码似乎是唯一的选择。关闭线程。