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;
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<T extends ConfigurableProperties> implements ConfigLoadedEventListener {
public abstract class GenericConfigLoadedEventListener<T extends ConfigurableProperties> implements ConfigLoadedEventListener, ApplicationContextInitializer<ConfigurableApplicationContext> {
protected final ResolvableType propertiesType;
......@@ -22,12 +24,18 @@ public abstract class GenericConfigLoadedEventListener<T extends ConfigurablePro
@Override
public void onApplicationEvent(ConfigLoadedEvent event) {
event.getSpringApplication().addInitializers(this);
if (propertiesType.isInstance(event.getConfigurableProperties())) {
this.log = event.getDeferredLogFactory().getLog(getClass());
this.onConfigLoaded(event, (T) event.getConfigurableProperties());
}
}
@Override
public void initialize(ConfigurableApplicationContext applicationContext) {
}
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;
import com.schbrain.framework.autoconfigure.apollo.event.listener.GenericConfigLoadedEventListener;
import com.schbrain.framework.autoconfigure.dubbo.properties.DubboProperties;
import org.springframework.boot.SpringApplication;
import org.springframework.context.ApplicationContextInitializer;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.core.Ordered;
import org.springframework.core.env.ConfigurableEnvironment;
......@@ -17,7 +16,7 @@ import static org.apache.dubbo.config.ConfigKeys.DUBBO_SCAN_BASE_PACKAGES;
* @author liaozan
* @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";
......@@ -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());
}
......
......@@ -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);
......
......@@ -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<LoggerProperties> {
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<String, String> hostInfoProperties = buildHostInfoProperties(hostInfo);
event.getPropertySource().addProperties(hostInfoProperties);
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