From aaf191e4c60434d407c952bb84c69960637f67b8 Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Fri, 14 Jul 2017 12:33:57 +0200 Subject: [PATCH] Logs are no longer altered when sleuth is disabled fixes #638 --- .../TraceEnvironmentPostProcessor.java | 6 ++-- ...oConfigurationWithDisabledSleuthTests.java | 35 +++++++++++++++---- .../src/test/resources/bootstrap-disabled.yml | 5 +++ 3 files changed, 38 insertions(+), 8 deletions(-) create mode 100644 spring-cloud-sleuth-core/src/test/resources/bootstrap-disabled.yml 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 408e3c311..1ac7369c5 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 @@ -50,8 +50,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:-}]"); + } map.put("spring.aop.proxyTargetClass", "true"); addOrReplace(environment.getPropertySources(), map); } 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