2

在本地使用org.springframework.cloud:spring-cloud-gcp-starter-trace:1.0.0.RELEASE和运行我的集成测试时,我收到以下错误消息:

org.springframework.beans.factory.BeanCreationException:在类路径资源[org/springframework/cloud/gcp/autoconfigure/trace/StackdriverTraceAutoConfiguration.class]中定义名称为“stackdriverSender”的bean创建错误:通过工厂方法进行的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 跟踪。我查看了参考文档,但似乎只能找到有关如何为特定集成点(如 RxJava、RestTemplate 等)禁用 Sleuth 的信息。但是如何完全禁用 Sleuth?

我试过设置spring.sleuth.enabled=false,但这似乎没有任何区别。

4

3 回答 3

2

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

于 2018-08-12T17:33:09.137 回答
1

HowTo:使用 Zipkin 禁用 Webflux Sleuth 实现的所有测试

如果,你有这些依赖:

implementation 'org.springframework.cloud:spring-cloud-starter-sleuth'
implementation 'org.springframework.cloud:spring-cloud-sleuth-zipkin'

然后,通过将 application.yml 添加到您的 test/resources 文件夹中,为您的集成测试完全禁用 Sleuth/Zipkin:

spring:
  sleuth: # All sleuth features disabled for integration tests
    enabled: false
    reactor:
      enabled: false
    web:
      enabled: false
    async:
      enabled: false
      client:
        template:
          enabled: false
  zipkin: # All zipkin features disabled for integration tests
    enabled: false
于 2021-10-08T14:34:00.547 回答
0

You can disable tracing, logging and set a fake project id as follow:

spring.cloud.gcp.project-id=fake-project-id
spring.cloud.gcp.logging.enabled=false
spring.cloud.gcp.trace.enabled=false
于 2020-01-12T19:11:39.120 回答