覆盖 Hysterix 日志记录

Override Hysterix Logging

我正在尝试了解 SpringBoot 在实施 Hysterix 断路器之前和之后生成的日志

在 Hystrix 之前,日志看起来像,

17:31:35.977 [http-nio-8080-exec-2] [TransID:bcc8a9e9-41b7-47c8-9eb1-0f8becb42f68] INFO  c.f.e.common.logging.MethodLogging - Entered Class: class com.org.myapp.service.MyService, Method: getData, Arguments: 123456

实施 Hystrix 后,日志如下所示,

17:21:23.197 [hystrix-MyController-1] [TransID:] INFO  c.f.e.common.logging.MethodLogging - Entered Class: class com.org.myapp.service.MyService, Method: getData, Arguments: 123456

那么,http-nio-8080-exec-2 是如何被 hystrix-OrchestratorController-1 替换的,以及为什么在实施 Hystrix 时它没有显示我的 TransactionId。 Hystrix 是如何接管日志记录的?两者有什么区别?有什么办法可以恢复到我原来的日志记录格式吗? 我在 application.properties 中尝试了 hystrix.command.default.requestLog.enabled=false,但没有成功。

主要class

@SpringBootApplication
@EnableCircuitBreaker
class MyApp{
}

RestController

@GetMapping("...")
@HystrixCommand(commandKey="data")
public Object getData(){
}

application.properties

hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=5000

Hystrix 使用自己的线程而不是本地线程。这就是您的日志看起来不同的原因。

将此 属性 添加到您的 application.properties

hystrix.command.default.execution.isolation.strategy=SEMAPHORE

现在 hystrix 将使用您的本地线程。