From 069afb2a73778a227897a87714070c20ccf42847 Mon Sep 17 00:00:00 2001 From: Dave Syer Date: Thu, 5 Feb 2015 11:43:40 +0100 Subject: [PATCH] Use logback by default in Eureka server Now that blitz4j 1.36.0 is out, with a bit of hackery we can prevent it from barfing on startup. Seems worth it (and certainly makes it easier to embed Eureka server). Fixes gh-3 --- pom.xml | 6 +++- spring-cloud-netflix-eureka-server/pom.xml | 34 ++++++++---------- .../EurekaServerInitializerConfiguration.java | 36 +++++++++++++++++++ 3 files changed, 55 insertions(+), 21 deletions(-) diff --git a/pom.xml b/pom.xml index 1f09f57d..31c14754 100644 --- a/pom.xml +++ b/pom.xml @@ -151,6 +151,10 @@ log4j log4j + + com.netflix.blitz4j + blitz4j + @@ -163,7 +167,7 @@ com.netflix.blitz4j blitz4j - 1.34 + 1.36.0 com.netflix.feign diff --git a/spring-cloud-netflix-eureka-server/pom.xml b/spring-cloud-netflix-eureka-server/pom.xml index a7f02e1a..cf286440 100644 --- a/spring-cloud-netflix-eureka-server/pom.xml +++ b/spring-cloud-netflix-eureka-server/pom.xml @@ -20,16 +20,6 @@ org.springframework.boot spring-boot-starter-web - - - spring-boot-starter-logging - org.springframework.boot - - - - - org.springframework.boot - spring-boot-starter-log4j org.springframework.boot @@ -38,12 +28,6 @@ org.springframework.boot spring-boot-starter-freemarker - - - spring-boot-starter-logging - org.springframework.boot - - org.springframework.cloud @@ -57,6 +41,10 @@ com.netflix.eureka eureka-client + + com.netflix.blitz4j + blitz4j + com.sun.jersey jersey-servlet @@ -69,16 +57,22 @@ com.netflix.eureka eureka-core + + + blitz4j + com.netflix.blitz4j + + + + + com.netflix.archaius + archaius-core com.thoughtworks.xstream xstream - - com.netflix.blitz4j - blitz4j - org.projectlombok lombok diff --git a/spring-cloud-netflix-eureka-server/src/main/java/org/springframework/cloud/netflix/eureka/server/EurekaServerInitializerConfiguration.java b/spring-cloud-netflix-eureka-server/src/main/java/org/springframework/cloud/netflix/eureka/server/EurekaServerInitializerConfiguration.java index 3b621f15..f9d332ea 100644 --- a/spring-cloud-netflix-eureka-server/src/main/java/org/springframework/cloud/netflix/eureka/server/EurekaServerInitializerConfiguration.java +++ b/spring-cloud-netflix-eureka-server/src/main/java/org/springframework/cloud/netflix/eureka/server/EurekaServerInitializerConfiguration.java @@ -20,7 +20,9 @@ import java.io.IOException; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.lang.reflect.Modifier; +import java.util.Properties; +import javax.annotation.PostConstruct; import javax.servlet.ServletContext; import javax.servlet.ServletContextEvent; @@ -33,6 +35,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.boot.logging.LoggingSystem; import org.springframework.boot.logging.log4j.Log4JLoggingSystem; import org.springframework.cloud.netflix.eureka.DataCenterAwareMarshallingStrategy; import org.springframework.cloud.netflix.eureka.DiscoveryManagerInitializer; @@ -49,9 +52,12 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.Ordered; import org.springframework.core.io.ClassPathResource; +import org.springframework.core.io.support.PropertiesLoaderUtils; +import org.springframework.util.ClassUtils; import org.springframework.util.ReflectionUtils; import org.springframework.web.context.ServletContextAware; +import com.netflix.blitz4j.DefaultBlitz4jConfig; import com.netflix.blitz4j.LoggingConfiguration; import com.netflix.discovery.converters.JsonXStream; import com.netflix.discovery.converters.XmlXStream; @@ -89,6 +95,36 @@ public class EurekaServerInitializerConfiguration implements ServletContextAware this.servletContext = servletContext; } + @PostConstruct + public void initLogging() { + + if (!(LoggingSystem.get(ClassUtils.getDefaultClassLoader()) instanceof Log4JLoggingSystem)) { + + LoggingConfiguration off = new LoggingConfiguration() { + @Override + public void configure() { + } + }; + Field instance = ReflectionUtils.findField(LoggingConfiguration.class, + "instance"); + ReflectionUtils.makeAccessible(instance); + ReflectionUtils.setField(instance, null, off); + Field blitz4j = ReflectionUtils.findField(LoggingConfiguration.class, + "blitz4jConfig"); + ReflectionUtils.makeAccessible(blitz4j); + try { + Properties props = PropertiesLoaderUtils + .loadAllProperties(new ClassPathResource("log4j.properties", + Log4JLoggingSystem.class).toString()); + DefaultBlitz4jConfig blit4jConfig = new DefaultBlitz4jConfig(props); + ReflectionUtils.setField(blitz4j, off, blit4jConfig); + } + catch (IOException e) { + } + + } + } + @Bean @ConditionalOnMissingBean(DiscoveryManagerInitializer.class) public DiscoveryManagerInitializer discoveryManagerIntitializer() {