Commit acd5bcb8 authored by liaozan's avatar liaozan 🏀

Refactor the logging initializer

parent 673cd4b0
...@@ -3,6 +3,8 @@ package com.schbrain.framework.autoconfigure.apollo.event.listener; ...@@ -3,6 +3,8 @@ package com.schbrain.framework.autoconfigure.apollo.event.listener;
import com.schbrain.common.util.support.ConfigurableProperties; import com.schbrain.common.util.support.ConfigurableProperties;
import com.schbrain.framework.autoconfigure.apollo.event.ConfigLoadedEvent; import com.schbrain.framework.autoconfigure.apollo.event.ConfigLoadedEvent;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import org.springframework.context.ApplicationContextInitializer;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.core.ResolvableType; import org.springframework.core.ResolvableType;
/** /**
...@@ -10,7 +12,7 @@ import org.springframework.core.ResolvableType; ...@@ -10,7 +12,7 @@ import org.springframework.core.ResolvableType;
* @since 2023-04-28 * @since 2023-04-28
*/ */
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public abstract class GenericConfigLoadedEventListener<T extends ConfigurableProperties> implements ConfigLoadedEventListener { public abstract class GenericConfigLoadedEventListener<T extends ConfigurableProperties> implements ConfigLoadedEventListener, ApplicationContextInitializer<ConfigurableApplicationContext> {
protected final ResolvableType propertiesType; protected final ResolvableType propertiesType;
...@@ -22,12 +24,18 @@ public abstract class GenericConfigLoadedEventListener<T extends ConfigurablePro ...@@ -22,12 +24,18 @@ public abstract class GenericConfigLoadedEventListener<T extends ConfigurablePro
@Override @Override
public void onApplicationEvent(ConfigLoadedEvent event) { public void onApplicationEvent(ConfigLoadedEvent event) {
event.getSpringApplication().addInitializers(this);
if (propertiesType.isInstance(event.getConfigurableProperties())) { if (propertiesType.isInstance(event.getConfigurableProperties())) {
this.log = event.getDeferredLogFactory().getLog(getClass()); this.log = event.getDeferredLogFactory().getLog(getClass());
this.onConfigLoaded(event, (T) event.getConfigurableProperties()); this.onConfigLoaded(event, (T) event.getConfigurableProperties());
} }
} }
@Override
public void initialize(ConfigurableApplicationContext applicationContext) {
}
protected abstract void onConfigLoaded(ConfigLoadedEvent event, T configurableProperties); protected abstract void onConfigLoaded(ConfigLoadedEvent event, T configurableProperties);
} }
\ No newline at end of file
...@@ -6,7 +6,6 @@ import com.schbrain.framework.autoconfigure.apollo.event.ConfigLoadedEvent; ...@@ -6,7 +6,6 @@ import com.schbrain.framework.autoconfigure.apollo.event.ConfigLoadedEvent;
import com.schbrain.framework.autoconfigure.apollo.event.listener.GenericConfigLoadedEventListener; import com.schbrain.framework.autoconfigure.apollo.event.listener.GenericConfigLoadedEventListener;
import com.schbrain.framework.autoconfigure.dubbo.properties.DubboProperties; import com.schbrain.framework.autoconfigure.dubbo.properties.DubboProperties;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.context.ApplicationContextInitializer;
import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.core.Ordered; import org.springframework.core.Ordered;
import org.springframework.core.env.ConfigurableEnvironment; import org.springframework.core.env.ConfigurableEnvironment;
...@@ -17,7 +16,7 @@ import static org.apache.dubbo.config.ConfigKeys.DUBBO_SCAN_BASE_PACKAGES; ...@@ -17,7 +16,7 @@ import static org.apache.dubbo.config.ConfigKeys.DUBBO_SCAN_BASE_PACKAGES;
* @author liaozan * @author liaozan
* @since 2023-04-28 * @since 2023-04-28
*/ */
public class DubboConfigLoadedEventListener extends GenericConfigLoadedEventListener<DubboProperties> implements ApplicationContextInitializer<ConfigurableApplicationContext> { public class DubboConfigLoadedEventListener extends GenericConfigLoadedEventListener<DubboProperties> {
public static final String DUBBO_APPLICATION_NAME = "dubbo.application.name"; public static final String DUBBO_APPLICATION_NAME = "dubbo.application.name";
...@@ -33,7 +32,6 @@ public class DubboConfigLoadedEventListener extends GenericConfigLoadedEventList ...@@ -33,7 +32,6 @@ public class DubboConfigLoadedEventListener extends GenericConfigLoadedEventList
@Override @Override
protected void onConfigLoaded(ConfigLoadedEvent event, DubboProperties properties) { protected void onConfigLoaded(ConfigLoadedEvent event, DubboProperties properties) {
event.getSpringApplication().addInitializers(this);
addRequiredProperties(event.getEnvironment(), event.getSpringApplication(), event.getPropertySource()); addRequiredProperties(event.getEnvironment(), event.getSpringApplication(), event.getPropertySource());
} }
...@@ -50,4 +48,4 @@ public class DubboConfigLoadedEventListener extends GenericConfigLoadedEventList ...@@ -50,4 +48,4 @@ public class DubboConfigLoadedEventListener extends GenericConfigLoadedEventList
return application.getMainApplicationClass().getPackage().getName(); return application.getMainApplicationClass().getPackage().getName();
} }
} }
\ No newline at end of file
...@@ -44,18 +44,25 @@ public class LoggerConfigurationInitializer { ...@@ -44,18 +44,25 @@ public class LoggerConfigurationInitializer {
private final String applicationName; private final String applicationName;
private volatile boolean initialized;
public LoggerConfigurationInitializer(ConfigurableEnvironment environment, LoggerProperties properties, HostInfo hostInfo) { public LoggerConfigurationInitializer(ConfigurableEnvironment environment, LoggerProperties properties, HostInfo hostInfo) {
this.environment = environment; this.environment = environment;
this.properties = properties; this.properties = properties;
this.hostInfo = hostInfo; this.hostInfo = hostInfo;
this.applicationName = ApplicationName.get(environment); this.applicationName = ApplicationName.get(environment);
this.init();
} }
public void init() { public void init() {
if (properties == null) { if (properties == null) {
log.warn("logger properties is null");
return;
}
if (initialized) {
log.warn("{} is initialized", getClass().getName());
return; return;
} }
initialized = true;
LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory(); LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory();
for (Logger logger : context.getLoggerList()) { for (Logger logger : context.getLoggerList()) {
registerAppender(logger, context); registerAppender(logger, context);
......
...@@ -15,6 +15,7 @@ import com.schbrain.framework.autoconfigure.logger.properties.LoggerProperties; ...@@ -15,6 +15,7 @@ import com.schbrain.framework.autoconfigure.logger.properties.LoggerProperties;
import org.springframework.boot.context.logging.LoggingApplicationListener; import org.springframework.boot.context.logging.LoggingApplicationListener;
import org.springframework.boot.logging.LogFile; import org.springframework.boot.logging.LogFile;
import org.springframework.boot.logging.LoggingSystem; import org.springframework.boot.logging.LoggingSystem;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.core.env.ConfigurableEnvironment; import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
...@@ -30,6 +31,13 @@ import static org.springframework.boot.context.logging.LoggingApplicationListene ...@@ -30,6 +31,13 @@ import static org.springframework.boot.context.logging.LoggingApplicationListene
*/ */
public class LoggerConfigLoadedEventListener extends GenericConfigLoadedEventListener<LoggerProperties> { public class LoggerConfigLoadedEventListener extends GenericConfigLoadedEventListener<LoggerProperties> {
private LoggerConfigurationInitializer initializer;
@Override
public void initialize(ConfigurableApplicationContext applicationContext) {
initializer.init();
}
@Override @Override
protected void onConfigLoaded(ConfigLoadedEvent event, LoggerProperties properties) { protected void onConfigLoaded(ConfigLoadedEvent event, LoggerProperties properties) {
ConfigurableEnvironment environment = event.getEnvironment(); ConfigurableEnvironment environment = event.getEnvironment();
...@@ -37,7 +45,7 @@ public class LoggerConfigLoadedEventListener extends GenericConfigLoadedEventLis ...@@ -37,7 +45,7 @@ public class LoggerConfigLoadedEventListener extends GenericConfigLoadedEventLis
Map<String, String> hostInfoProperties = buildHostInfoProperties(hostInfo); Map<String, String> hostInfoProperties = buildHostInfoProperties(hostInfo);
event.getPropertySource().addProperties(hostInfoProperties); event.getPropertySource().addProperties(hostInfoProperties);
configLoggingFileLocation(environment, properties.getLogConfigNamespace()); configLoggingFileLocation(environment, properties.getLogConfigNamespace());
new LoggerConfigurationInitializer(environment, properties, hostInfo).init(); this.initializer = new LoggerConfigurationInitializer(environment, properties, hostInfo);
} }
/** /**
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment