diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/autoconfig/TraceEnvironmentPostProcessor.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/autoconfig/TraceEnvironmentPostProcessor.java index 953a30253..cf632cb1f 100644 --- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/autoconfig/TraceEnvironmentPostProcessor.java +++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/autoconfig/TraceEnvironmentPostProcessor.java @@ -43,7 +43,7 @@ import org.springframework.core.env.PropertySource; public class TraceEnvironmentPostProcessor implements EnvironmentPostProcessor { private static final String PROPERTY_SOURCE_NAME = "defaultProperties"; - public static final String SPRING_AOP_PROXY_TARGET_CLASS = "spring.aop.proxyTargetClass"; + private static final String SPRING_AOP_PROXY_TARGET_CLASS = "spring.aop.proxyTargetClass"; @Override public void postProcessEnvironment(ConfigurableEnvironment environment, @@ -51,8 +51,10 @@ public class TraceEnvironmentPostProcessor implements EnvironmentPostProcessor { Map map = new HashMap(); // This doesn't work with all logging systems but it's a useful default so you see // traces in logs without having to configure it. - map.put("logging.pattern.level", - "%5p [${spring.zipkin.service.name:${spring.application.name:-}},%X{X-B3-TraceId:-},%X{X-B3-SpanId:-},%X{X-Span-Export:-}]"); + if (Boolean.parseBoolean(environment.getProperty("spring.sleuth.enabled", "true"))) { + map.put("logging.pattern.level", + "%5p [${spring.zipkin.service.name:${spring.application.name:-}},%X{X-B3-TraceId:-},%X{X-B3-SpanId:-},%X{X-Span-Export:-}]"); + } // TODO: Remove this in 2.0.x. For compatibility we always set to true if (!environment.containsProperty(SPRING_AOP_PROXY_TARGET_CLASS)) { map.put(SPRING_AOP_PROXY_TARGET_CLASS, "true"); diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/autoconfig/TraceAutoConfigurationWithDisabledSleuthTests.java b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/autoconfig/TraceAutoConfigurationWithDisabledSleuthTests.java index 0277acc4d..fe24d438f 100644 --- a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/autoconfig/TraceAutoConfigurationWithDisabledSleuthTests.java +++ b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/autoconfig/TraceAutoConfigurationWithDisabledSleuthTests.java @@ -17,26 +17,49 @@ package org.springframework.cloud.sleuth.autoconfig; import java.security.SecureRandom; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.FactoryBean; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.rule.OutputCapture; +import org.springframework.cloud.sleuth.Tracer; +import org.springframework.cloud.sleuth.assertions.SleuthAssertions; import org.springframework.context.annotation.Bean; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.TestPropertySource; +import org.springframework.context.annotation.Configuration; +import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(classes = TraceAutoConfigurationWithDisabledSleuthTests.Config.class) -@TestPropertySource(properties = "spring.sleuth.enabled=false") +@SpringBootTest(classes = TraceAutoConfigurationWithDisabledSleuthTests.Config.class, + properties = "spring.sleuth.enabled=false", + webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +@ActiveProfiles("disabled") public class TraceAutoConfigurationWithDisabledSleuthTests { - @Test - public void shouldStartContext(){ + private static final Log log = LogFactory.getLog(TraceAutoConfigurationWithDisabledSleuthTests.class); + @Rule public OutputCapture capture = new OutputCapture(); + @Autowired(required = false) Tracer tracer; + + @Test + public void shouldStartContext() { + SleuthAssertions.then(this.tracer).isNull(); + } + + @Test + public void shouldNotContainAnyTracingInfoInTheLogs() { + log.info("hello"); + + SleuthAssertions.then(this.capture.toString()).doesNotContain("[foo"); } @EnableAutoConfiguration + @Configuration static class Config { @Bean public FactoryBean secureRandom() { diff --git a/spring-cloud-sleuth-core/src/test/resources/bootstrap-disabled.yml b/spring-cloud-sleuth-core/src/test/resources/bootstrap-disabled.yml new file mode 100644 index 000000000..7d184ec44 --- /dev/null +++ b/spring-cloud-sleuth-core/src/test/resources/bootstrap-disabled.yml @@ -0,0 +1,5 @@ +spring: + application: + name: foo + sleuth: + enabled: false \ No newline at end of file