Skip to content

Commit 40c3433

Browse files
authored
Merge pull request #49 from hengboy/2.3.x
Add "LoggingFactoryBeanCustomizers"
2 parents 3a7eee4 + f75ff81 commit 40c3433

File tree

3 files changed

+70
-7
lines changed

3 files changed

+70
-7
lines changed

api-boot-project/api-boot-autoconfigure/src/main/java/org/minbox/framework/api/boot/autoconfigure/logging/ApiBootLoggingAutoConfiguration.java

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
import org.slf4j.LoggerFactory;
2626
import org.springframework.beans.factory.ObjectProvider;
2727
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
28+
import org.springframework.boot.autoconfigure.cache.CacheManagerCustomizer;
29+
import org.springframework.boot.autoconfigure.cache.CacheManagerCustomizers;
2830
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
2931
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
3032
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
@@ -38,6 +40,7 @@
3840
import org.springframework.util.ObjectUtils;
3941

4042
import java.util.List;
43+
import java.util.stream.Collectors;
4144

4245
import static org.minbox.framework.api.boot.autoconfigure.logging.ApiBootLoggingProperties.API_BOOT_LOGGING_PREFIX;
4346

@@ -74,18 +77,24 @@ public ApiBootLoggingAutoConfiguration(ApiBootLoggingProperties apiBootLoggingPr
7477
this.apiBootLoggingProperties = apiBootLoggingProperties;
7578
}
7679

80+
@Bean
81+
@ConditionalOnMissingBean
82+
public LoggingFactoryBeanCustomizers loggingFactoryBeanCustomizers(ObjectProvider<LoggingFactoryBeanCustomizer> customizers) {
83+
return new LoggingFactoryBeanCustomizers(customizers.orderedStream().collect(Collectors.toList()));
84+
}
85+
7786
/**
7887
* logging factory bean
7988
* {@link LoggingFactoryBean}
8089
*
8190
* @param loggingAdminDiscoveryObjectProvider Logging Admin Discovery Instance Provider
82-
* @param customizerObjectProvider LoggingFactory Bean Customizer
91+
* @param customizers LoggingFactory Bean Customizers
8392
* @return LoggingFactoryBean
8493
*/
8594
@Bean
8695
@ConditionalOnMissingBean
8796
public LoggingFactoryBean loggingFactoryBean(ObjectProvider<LoggingAdminDiscovery> loggingAdminDiscoveryObjectProvider,
88-
ObjectProvider<List<LoggingFactoryBeanCustomizer>> customizerObjectProvider) {
97+
LoggingFactoryBeanCustomizers customizers) {
8998
LoggingFactoryBean factoryBean = new LoggingFactoryBean();
9099
factoryBean.setIgnorePaths(apiBootLoggingProperties.getIgnorePaths());
91100
factoryBean.setIgnoreHttpStatus(apiBootLoggingProperties.getIgnoreHttpStatus());
@@ -97,12 +106,8 @@ public LoggingFactoryBean loggingFactoryBean(ObjectProvider<LoggingAdminDiscover
97106
factoryBean.setShowConsoleLog(apiBootLoggingProperties.isShowConsoleLog());
98107
factoryBean.setFormatConsoleLog(apiBootLoggingProperties.isFormatConsoleLogJson());
99108

100-
List<LoggingFactoryBeanCustomizer> customizers = customizerObjectProvider.getIfAvailable();
101-
if (!ObjectUtils.isEmpty(customizers)) {
102-
customizers.stream().forEach(customizer -> customizer.customize(factoryBean));
103-
}
104109
logger.info("【LoggingFactoryBean】init successfully.");
105-
return factoryBean;
110+
return customizers.customize(factoryBean);
106111
}
107112

108113
/**
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package org.minbox.framework.api.boot.autoconfigure.logging;
2+
3+
import org.minbox.framework.logging.client.LoggingFactoryBean;
4+
import org.springframework.boot.autoconfigure.cache.CacheManagerCustomizer;
5+
import org.springframework.boot.autoconfigure.cache.CacheManagerCustomizers;
6+
import org.springframework.boot.util.LambdaSafe;
7+
8+
import java.util.ArrayList;
9+
import java.util.Collections;
10+
import java.util.List;
11+
12+
/**
13+
* The {@link LoggingFactoryBeanCustomizer} collection processing class
14+
*
15+
* @author 恒宇少年
16+
*/
17+
public class LoggingFactoryBeanCustomizers {
18+
private List<LoggingFactoryBeanCustomizer> customizers;
19+
20+
public LoggingFactoryBeanCustomizers(List<LoggingFactoryBeanCustomizer> customizers) {
21+
this.customizers = (customizers != null) ? new ArrayList<>(customizers) : Collections.emptyList();
22+
}
23+
24+
/**
25+
* Customize the specified {@link LoggingFactoryBean}. Locates all
26+
* {@link LoggingFactoryBeanCustomizer} beans able to handle the specified instance and
27+
* invoke {@link LoggingFactoryBeanCustomizer#customize(LoggingFactoryBean)} on them.
28+
*
29+
* @param factoryBean the logging factory bean to customize
30+
* @return the factory bean
31+
*/
32+
public LoggingFactoryBean customize(LoggingFactoryBean factoryBean) {
33+
LambdaSafe.callbacks(LoggingFactoryBeanCustomizer.class, this.customizers, factoryBean)
34+
.withLogger(LoggingFactoryBeanCustomizer.class).invoke((customizer) -> customizer.customize(factoryBean));
35+
return factoryBean;
36+
}
37+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package org.minbox.framework.api.boot.sample.logging;
2+
3+
import org.minbox.framework.api.boot.autoconfigure.logging.LoggingFactoryBeanCustomizer;
4+
import org.minbox.framework.logging.client.LoggingFactoryBean;
5+
import org.springframework.core.annotation.Order;
6+
import org.springframework.stereotype.Component;
7+
8+
/**
9+
* {@link LoggingFactoryBeanCustomizer}实现类
10+
* 新增排除日志拦截输出的路径
11+
*
12+
* @author 恒宇少年
13+
*/
14+
@Component
15+
@Order(2)
16+
public class AppendIgnorePathCustomizer implements LoggingFactoryBeanCustomizer {
17+
@Override
18+
public void customize(LoggingFactoryBean factoryBean) {
19+
factoryBean.getIgnorePaths().add("/test");
20+
}
21+
}

0 commit comments

Comments
 (0)