Annotate LoggingAutoConfiguration with @ConditionalOnMissingBean to disable auto-configuration when a user has explicitly declared GemFire/Geode logging configuration.

As user explicitly declares GemFire/Geode logging configuration when s/he annotates his/her main Spring Boot application class or an application specific @Configuration class picked up by Spring Boot with SDG's @EnableLogging annotation.

Resolves gh-85.
This commit is contained in:
John Blum
2020-05-19 16:55:28 -07:00
parent 22aaead3cb
commit 58122de507
3 changed files with 14 additions and 3 deletions

View File

@@ -20,6 +20,7 @@ import org.apache.geode.cache.GemFireCache;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.gemfire.CacheFactoryBean;
import org.springframework.data.gemfire.config.annotation.EnableLogging;
@@ -31,6 +32,7 @@ import org.springframework.data.gemfire.config.annotation.EnableLogging;
* @see org.springframework.boot.autoconfigure.EnableAutoConfiguration
* @see org.springframework.boot.autoconfigure.condition.ConditionalOnBean
* @see org.springframework.boot.autoconfigure.condition.ConditionalOnClass
* @see org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
* @see org.springframework.context.annotation.Configuration
* @see org.springframework.data.gemfire.CacheFactoryBean
* @see org.springframework.data.gemfire.config.annotation.EnableLogging
@@ -39,8 +41,14 @@ import org.springframework.data.gemfire.config.annotation.EnableLogging;
@Configuration
@ConditionalOnBean(GemFireCache.class)
@ConditionalOnClass(CacheFactoryBean.class)
@ConditionalOnMissingBean(name = {
"org.springframework.data.gemfire.config.annotation.LoggingConfiguration.ClientGemFirePropertiesConfigurer",
"org.springframework.data.gemfire.config.annotation.LoggingConfiguration.LocatorGemFirePropertiesConfigurer",
"org.springframework.data.gemfire.config.annotation.LoggingConfiguration.PeerGemFirePropertiesConfigurer",
})
@EnableLogging
@SuppressWarnings("unused")
// TODO Find a more reliable way to refer to the LoggingConfiguration Configurer beans defined above other than by name!
public class LoggingAutoConfiguration {
}

View File

@@ -52,7 +52,10 @@ import org.springframework.test.context.junit4.SpringRunner;
*/
@RunWith(SpringRunner.class)
@SpringBootTest(
properties = { "spring.main.allow-bean-definition-overriding=false" },
properties = {
"spring.data.gemfire.logging.level=warn",
"spring.main.allow-bean-definition-overriding=false"
},
webEnvironment = SpringBootTest.WebEnvironment.NONE
)
@SuppressWarnings("unused")
@@ -84,7 +87,7 @@ public class LoggingManualConfigurationIntegrationTests extends IntegrationTests
@SpringBootApplication
@EnableGemFireMockObjects
@EnableLogging(logLevel = "warn")
@EnableLogging
@UseMemberName("LoggingManualConfigurationIntegrationTests")
static class TestConfigurationOne { }

View File

@@ -3,5 +3,5 @@
spring.boot.data.gemfire.cache.data.import.active-profiles=IMPORT
spring.boot.data.gemfire.security.ssl.keystore.name=non-existing-trusted.keystore
spring.data.gemfire.logging.level=error
spring.data.gemfire.cache.log-level=${spring.data.gemfire.logging.level}
spring.data.gemfire.cache.log-level=${spring.data.gemfire.logging.level:off}
spring.main.allow-bean-definition-overriding=true