当前位置: 首页 > 知识库问答 >
问题:

Spring MVC HandlerInterceptorAdapter缺少slf4j日志回溯跟踪ID

徐凌
2023-03-14

我在Spring MVC应用程序中实现了一个类,它为我扩展了HandlerInterceptorAdapter,以便在执行任何控制器之前在preHandle、postHandle和afterCompletion中执行一些操作。下面是我正在观察的情况。

预处理日志记录的日志条目AppTime:00:30:01.230线程:[http-nio-8080-exec-1]级别:INFO Class:Hello.Extractor x-span-export=false,x-b3-spanid=3aad3F52E26EB59D,x-b3-traceid=3aad3F52E26EB59D消息:内部预处理

postHandle日志记录的日志条目AppTime:00:30:01.394线程:[http-nio-8080-exec-1]级别:INFO Class:Hello.Extractor x-span-export=false,x-b3-spanID=3aad3F52E26EB59D,x-b3-traceID=3aad3F52E26EB59D消息:Inside postHandle

afterCompletionlogging的日志条目AppTime:00:30:01.395线程:[http-nio-8080-exec-1]级别:INFO Class:Hello.Extractor Msg:Inside AfterCompletion。

如果您看到第三个条目缺少跟踪ID和跨距ID。有什么办法解决这个问题吗?

公共类提取器扩展HandlerInterceptorAdapter{

private static Logger logger = LoggerFactory.getLogger(HttpHeaderExtractor.class);

@Autowired
public Extractor() {
}

public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
        throws Exception {

    logger.info("Inside preHandle");
    return true;
}

public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
        ModelAndView modelAndView) throws Exception {
    logger.info("Inside postHandle");
}

public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
        throws Exception {
    logger.info("Inside afterCompletion");
}

}

共有1个答案

商迪
2023-03-14

我发现我们添加了另一个HandlerIntercepter,它正在进行MDC日志记录,并且在其中我们手动清除,这导致在我的另一个HandlerIntercepter aftercompletion方法中不填充跟踪id。此外,如果您使用多个处理程序拦截器和您注册的序列也很重要。在最近的Spring,您将以相反的顺序声明它们,以便它们一个一个地执行。

 类似资料:
  • 本章介绍如何使用Zipkin或Jaeger收集启用了Istio的应用程序的调用链信息。 完成本章后,你可以理解有关应用程序的所有假设以及如何使其参与跟踪,无论您使用何种语言/框架/平台构建应用程序。 BookInfo示例用来作为此任务的示例应用程序。 环境准备 参照安装指南的说明安装Istio。 如果您在安装过程中未启动Zipkin或Jaeger插件,则可以运行以下命令启动: 启动Zipkin:

  • 我在Azure中有一个Java web应用程序,它使用Logback进行跟踪日志记录。我正在尝试将跟踪日志记录与Azure中的应用程序洞察连接起来,并且我遵循了Azure文档中的所有说明。 下面是Maven的相关部分: 我得ApplicationInsights.xml: 我的logback.xml: 我的类测试记录器和应用程序的集成: 有一些错误与性能计数器相关联。我试图找到一些关于这些错误的信

  • 该项目 为了寻找解决方案,我首先使用maven在执行LiquiBase:Update时将变更日志的SVN修订版存储到中。基于修订版号检索变更日志容易出错。 我已经花了一周的时间来寻找一个健壮的解决方案,在谷歌上搜索了几个小时,构建了几个测试用例(使用了适应的父级和具体的POM,部分使用了maven scm插件等等),但没有运气。最初,我计划使用LiquiBase:tag存储文件路径+修订,但只有当

  • 在Jboss EAP之外使用Spring Cloud Sleuth时,一切都运行良好,我们看到跟踪日志如下所示: 2018-03-19 16:34:35.947信息[identity,3EB8EBF7CA4B15F5,3EB8EBF7CA4B15F5,False]25456---[nio-8081-exec-2]Internal.Process:消息 但在EAP内部运行时,以下是相同的输出: 20

  • 大家好,希望有人能帮助我,我正在尝试获得一个非常基本的zipkin实现,以掌握分布式跟踪。我正在使用Spring靴来做这件事,但似乎不能使它工作。当我尝试为我的服务查找跟踪时,zipkin UI中不会显示任何内容。 我有两个部署如下: 我想要登录的spring boot应用程序: 我得完整日志: 我部署的第二个应用程序是我的zipkin客户机/UI Pom.xml

  • 描述演示如何从服务网格收集遥测信息的任务。 分布式跟踪。如何配置代理,以便向Zipkin或Jaeger发送跟踪请求 收集metrics和日志。这个任务展示如何配置Istio来收集metrics和日志。 收集TCP服务的Metrics。这个任务展示如何为TCP服务收集metrics和日志。 从Prometheus中查询Metrics。这个任务展示如何使用Prometheus查询metrics。 使用