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

标签 java spring tomcat slf4j

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

最佳答案

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

关于java - 将上下文路径添加到 SLF4J 日志语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32591068/

相关文章:

jobs - JSprit 中的相关职位

java - 在 Spring Boot 中处理 */* 内容类型

java - 通过类路径 Spring 访问 war tomcat 中依赖项 jar 中的属性文件

java - NetBeans Tomcat 构建失败 - 模块尚未部署

java - tomcat 5.5升级到tomcat 7.0需要重新编译所有JSP文件吗

Java:扑克手牌

java - 当前毫秒数,从 long 到 int

java - 是否可以使用 Spring 创建控制台应用程序?

tomcat - 将 TeamCity 部署到 Azure 网站失败

java - 编程语言中的 "Explicitly"和 "Implicitly"有什么区别?