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

如何在Spring Boot 2中使用MDC和hystrix?

杨凯旋
2023-03-14

我们在Spring启动应用程序中使用hystrix。我们希望使用MDC将请求ID、请求URI和登录用户等特定属性附加到每个日志语句中。这种机制在实现hystrix的任何地方都不起作用。

@HystrixCommand(fallbackMethod = "callFallback", commandProperties = {
            @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "10000")}, ignoreExceptions = Exception.class)
public GenericResponse callUser(User user) {
  //Implementation
   log.info("Creating user called");
}

对于非hystrix注释的方法,它的工作非常好。我知道MDC是特定于线程的,hystrix在不同的线程上执行。由于我无法对hystrix发表评论,请建议开展相关工作。

共有1个答案

鄢松
2023-03-14

您可以使用HystrixCommandExecutionHook来确保ThreadLocalMDC变量在所有hystrix线程之间流动。

你可以在这里找到netflix的完整文档。

有关如何使用钩子解决问题的更多帮助,请参阅本博客

在博客中,你可以使用MDC。获取(“密钥”)

 类似资料:
  • 问题内容: 跟进如何在线程池中使用MDC?如何将MDC与?具体来说,我如何在执行任务之前包装一个MDC值? 问题答案: 以下内容似乎对我有用: 和 针对您的任务而不是普通的ForkJoinPool 运行任务。 代替扩展。

  • 问题内容: 在我们的软件中,我们广泛使用MDC来跟踪Web请求的内容,例如会话ID和用户名。在原始线程中运行时,这可以正常工作。但是,有很多事情需要在后台处理。为此,我们使用java.concurrent.ThreadPoolExecutor和java.util.Timer类以及一些自卷式异步执行服务。所有这些服务都管理自己的线程池。 这是Logback手册关于在这样的环境中使用MDC的内容: 映

  • 我有一个基于Spring boot sleuth的应用程序。一切正常。我现在有这样的日志: 现在,我想将自定义MDC添加到我的日志中,例如合同引用。我想要这样的日志: 我尝试了各种方法,但都没有成功: 使用Spring Sleuth Tracer添加标签; 使用MDC. put(xxx, xxx)将logging.pattern.level=%5p%mdc添加到我的application.prop

  • 我正在尝试使用 https://github.com/spring-projects/spring-security-oauth2-boot 使用本教程:https://docs.spring.io/spring-security-oauth2-boot/docs/current-SNAPSHOT/reference/htmlsingle/ SpringBoot应用程序 服务器初始化器 用户详细信

  • 我试图配置一个SpringBoot应用程序,将度量导出到InfluxDB,以便使用Grafana仪表板可视化它们。我使用这个仪表板作为一个例子,它使用普罗米修斯作为后端。对于一些度量,我不知道如何为它们创建图,但对于其他一些度量,我不知道如何创建图,甚至不知道是否可能。所以我在以下几点中列举了我不太确定的事情: > 是否有描述价值单位的文档?我作为示例使用的应用程序没有任何负载,所以有时我不知道值

  • 参考如何用Spring Sleuth记录MDC中的Question/Answer?我认为spring-cloud 2.0已经/将要改变(d),因为不再有或(或者我找不到) 如果应用程序属性和(如果set)也放在MDC中,那不是很好吗?我认为在中(因为这个类目前是,我不能子类它) 如果没有,我如何用Spring-Cloud2.0相应地实现这一点?