使用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
,但这似乎没有任何作用。
答案 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