运行集成测试时禁用Spring Cloud Sleuth?

时间:2018-08-12 13:16:07

标签: java spring-boot stackdriver spring-cloud-sleuth spring-cloud-gcp

使用org.springframework.cloud:spring-cloud-gcp-starter-trace:1.0.0.RELEASE并在本地运行集成测试时,出现以下错误消息:

  

org.springframework.beans.factory.BeanCreationException:错误   在类路径中创建名称为“ stackdriverSender”的bean   资源   [org / springframework / cloud / gcp / autoconfigure / trace / StackdriverTraceAutoConfiguration.class]:   通过工厂方法实例化Bean失败;嵌套异常为   org.springframework.beans.BeanInstantiationException:失败   实例化[zipkin2.reporter.Sender]:工厂方法   'stackdriverSender'引发异常;嵌套异常为   java.io.IOException:应用程序默认凭据不是   可用。如果它们在Google Compute Engine中运行,则可用。   否则,环境变量GOOGLE_APPLICATION_CREDENTIALS   必须定义为指向定义凭据的文件。看到   https://developers.google.com/accounts/docs/application-default-credentials   有关更多信息。

这是完全可以理解的,因为此环境变量不在本地存在,并且我不想在运行测试时使用Sleuth / Stackdriver跟踪。我看过reference documentation,但似乎只能找到有关如何针对特定集成点(例如RxJava,RestTemplate等)禁用Sleuth的信息。但是如何完全禁用Sleuth?

我尝试设置spring.sleuth.enabled=false,但这似乎没有任何作用。

2 个答案:

答案 0 :(得分:2)

我实际上是通过查看source类的StackdriverTraceAutoConfiguration找到答案的。如果使用GCP,解决此问题的方法是设置spring.cloud.gcp.trace.enabled=false。这将禁用对所有集成点的跟踪。

答案 1 :(得分:0)

您可以禁用跟踪,日志记录并设置伪造的项目ID,如下所示:

spring.cloud.gcp.project-id=fake-project-id
spring.cloud.gcp.logging.enabled=false
spring.cloud.gcp.trace.enabled=false