From acd5bcb8b858b0b368a15e7d00ad673d416af238 Mon Sep 17 00:00:00 2001 From: liaozan <378024053@qq.com> Date: Thu, 29 Jun 2023 02:35:30 +0800 Subject: [PATCH] Refactor the logging initializer --- .../listener/GenericConfigLoadedEventListener.java | 10 +++++++++- .../dubbo/listener/DubboConfigLoadedEventListener.java | 6 ++---- .../logger/LoggerConfigurationInitializer.java | 9 ++++++++- .../listener/LoggerConfigLoadedEventListener.java | 10 +++++++++- 4 files changed, 28 insertions(+), 7 deletions(-) diff --git a/starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/event/listener/GenericConfigLoadedEventListener.java b/starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/event/listener/GenericConfigLoadedEventListener.java index fc2cf1c..2f3b752 100644 --- a/starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/event/listener/GenericConfigLoadedEventListener.java +++ b/starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/event/listener/GenericConfigLoadedEventListener.java @@ -3,6 +3,8 @@ package com.schbrain.framework.autoconfigure.apollo.event.listener; import com.schbrain.common.util.support.ConfigurableProperties; import com.schbrain.framework.autoconfigure.apollo.event.ConfigLoadedEvent; import org.apache.commons.logging.Log; +import org.springframework.context.ApplicationContextInitializer; +import org.springframework.context.ConfigurableApplicationContext; import org.springframework.core.ResolvableType; /** @@ -10,7 +12,7 @@ import org.springframework.core.ResolvableType; * @since 2023-04-28 */ @SuppressWarnings("unchecked") -public abstract class GenericConfigLoadedEventListener implements ConfigLoadedEventListener { +public abstract class GenericConfigLoadedEventListener implements ConfigLoadedEventListener, ApplicationContextInitializer { protected final ResolvableType propertiesType; @@ -22,12 +24,18 @@ public abstract class GenericConfigLoadedEventListener implements ApplicationContextInitializer { +public class DubboConfigLoadedEventListener extends GenericConfigLoadedEventListener { public static final String DUBBO_APPLICATION_NAME = "dubbo.application.name"; @@ -33,7 +32,6 @@ public class DubboConfigLoadedEventListener extends GenericConfigLoadedEventList @Override protected void onConfigLoaded(ConfigLoadedEvent event, DubboProperties properties) { - event.getSpringApplication().addInitializers(this); addRequiredProperties(event.getEnvironment(), event.getSpringApplication(), event.getPropertySource()); } @@ -50,4 +48,4 @@ public class DubboConfigLoadedEventListener extends GenericConfigLoadedEventList return application.getMainApplicationClass().getPackage().getName(); } -} +} \ No newline at end of file diff --git a/starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/LoggerConfigurationInitializer.java b/starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/LoggerConfigurationInitializer.java index 95cdd8c..6336cee 100644 --- a/starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/LoggerConfigurationInitializer.java +++ b/starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/LoggerConfigurationInitializer.java @@ -44,18 +44,25 @@ public class LoggerConfigurationInitializer { private final String applicationName; + private volatile boolean initialized; + public LoggerConfigurationInitializer(ConfigurableEnvironment environment, LoggerProperties properties, HostInfo hostInfo) { this.environment = environment; this.properties = properties; this.hostInfo = hostInfo; this.applicationName = ApplicationName.get(environment); - this.init(); } public void init() { if (properties == null) { + log.warn("logger properties is null"); + return; + } + if (initialized) { + log.warn("{} is initialized", getClass().getName()); return; } + initialized = true; LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory(); for (Logger logger : context.getLoggerList()) { registerAppender(logger, context); diff --git a/starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/listener/LoggerConfigLoadedEventListener.java b/starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/listener/LoggerConfigLoadedEventListener.java index 619317b..6b91c24 100644 --- a/starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/listener/LoggerConfigLoadedEventListener.java +++ b/starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/listener/LoggerConfigLoadedEventListener.java @@ -15,6 +15,7 @@ import com.schbrain.framework.autoconfigure.logger.properties.LoggerProperties; import org.springframework.boot.context.logging.LoggingApplicationListener; import org.springframework.boot.logging.LogFile; import org.springframework.boot.logging.LoggingSystem; +import org.springframework.context.ConfigurableApplicationContext; import org.springframework.core.env.ConfigurableEnvironment; import org.springframework.util.StringUtils; @@ -30,6 +31,13 @@ import static org.springframework.boot.context.logging.LoggingApplicationListene */ public class LoggerConfigLoadedEventListener extends GenericConfigLoadedEventListener { + private LoggerConfigurationInitializer initializer; + + @Override + public void initialize(ConfigurableApplicationContext applicationContext) { + initializer.init(); + } + @Override protected void onConfigLoaded(ConfigLoadedEvent event, LoggerProperties properties) { ConfigurableEnvironment environment = event.getEnvironment(); @@ -37,7 +45,7 @@ public class LoggerConfigLoadedEventListener extends GenericConfigLoadedEventLis Map hostInfoProperties = buildHostInfoProperties(hostInfo); event.getPropertySource().addProperties(hostInfoProperties); configLoggingFileLocation(environment, properties.getLogConfigNamespace()); - new LoggerConfigurationInitializer(environment, properties, hostInfo).init(); + this.initializer = new LoggerConfigurationInitializer(environment, properties, hostInfo); } /** -- GitLab