From f8f8f178753617b119ff361da36ce684d9f6f237 Mon Sep 17 00:00:00 2001 From: guoyuanlu Date: Mon, 21 Oct 2024 14:36:01 +0800 Subject: [PATCH 1/2] update masking plugins --- .../data/filter/config/MaskingConfig.java | 4 +- .../masking/log4j2/MaskingStringLayout.java | 44 +++++++++---------- ...TimeToLiveIdempotentAutoConfiguration.java | 2 + .../main/resources/META-INF/spring.factories | 10 ++--- 4 files changed, 30 insertions(+), 30 deletions(-) diff --git a/eden-components/eden-solutions/eden-data-filter/src/main/java/org/ylzl/eden/data/filter/config/MaskingConfig.java b/eden-components/eden-solutions/eden-data-filter/src/main/java/org/ylzl/eden/data/filter/config/MaskingConfig.java index c0c9f09d5..dd22568a2 100644 --- a/eden-components/eden-solutions/eden-data-filter/src/main/java/org/ylzl/eden/data/filter/config/MaskingConfig.java +++ b/eden-components/eden-solutions/eden-data-filter/src/main/java/org/ylzl/eden/data/filter/config/MaskingConfig.java @@ -23,7 +23,9 @@ @Getter public class MaskingConfig { - private String type = "chars-scan"; + public static final String CHARS_SCAN = "chars-scan"; + + private String type = CHARS_SCAN; private final CharsScan charsScan = new CharsScan(); diff --git a/eden-components/eden-solutions/eden-data-filter/src/main/java/org/ylzl/eden/data/filter/masking/log4j2/MaskingStringLayout.java b/eden-components/eden-solutions/eden-data-filter/src/main/java/org/ylzl/eden/data/filter/masking/log4j2/MaskingStringLayout.java index 634a1e990..e86636590 100644 --- a/eden-components/eden-solutions/eden-data-filter/src/main/java/org/ylzl/eden/data/filter/masking/log4j2/MaskingStringLayout.java +++ b/eden-components/eden-solutions/eden-data-filter/src/main/java/org/ylzl/eden/data/filter/masking/log4j2/MaskingStringLayout.java @@ -16,6 +16,7 @@ package org.ylzl.eden.data.filter.masking.log4j2; +import org.apache.commons.lang3.StringUtils; import org.apache.logging.log4j.core.Layout; import org.apache.logging.log4j.core.LogEvent; import org.apache.logging.log4j.core.config.Configuration; @@ -74,12 +75,10 @@ public static MaskingStringLayout createLayout(@PluginConfiguration final Config @PluginAttribute(value = "charset", defaultString = "UTF-8") String charset, @PluginAttribute(value = "pattern", defaultString = PatternLayout.DEFAULT_CONVERSION_PATTERN) String pattern, @PluginAttribute(value = "type") String type, - @PluginAttribute(value = "prefix") String prefix, - @PluginAttribute(value = "scanList") String scanList, - @PluginAttribute(value = "replaceList") String replaceList, - @PluginAttribute(value = "defaultReplace") String defaultReplace, - @PluginAttribute(value = "replaceHash") String replaceHash, - @PluginAttribute(value = "whiteList") String whiteList) { + @PluginAttribute(value = "strategies") String strategies, + @PluginAttribute(value = "replacement") String replacement, + @PluginAttribute(value = "hash") String hash, + @PluginAttribute(value = "whitelist") String whitelist) { PatternParser patternParser = null; if (config != null) { @@ -90,26 +89,23 @@ public static MaskingStringLayout createLayout(@PluginConfiguration final Config } MaskingConfig maskingConfig = new MaskingConfig(); - if (type != null) { + if (StringUtils.isNotBlank(type)) { maskingConfig.setType(type); } - if (prefix != null) { - maskingConfig.getCharsScan().setPrefix(prefix); - } - if (scanList != null) { - maskingConfig.getCharsScan().setScanList(scanList); - } - if (replaceList != null) { - maskingConfig.getCharsScan().setReplaceList(replaceList); - } - if (defaultReplace != null) { - maskingConfig.getCharsScan().setDefaultReplace(defaultReplace); - } - if (replaceHash != null) { - maskingConfig.getCharsScan().setReplaceHash(replaceHash); - } - if (whiteList != null) { - maskingConfig.getCharsScan().setWhiteList(whiteList); + if (MaskingConfig.CHARS_SCAN.equals(maskingConfig.getType())) { + if (StringUtils.isNotBlank(strategies)) { + maskingConfig.getCharsScan().setReplaceList(strategies); + maskingConfig.getCharsScan().setScanList(strategies); + } + if (StringUtils.isNotBlank(replacement)) { + maskingConfig.getCharsScan().setDefaultReplace(replacement); + } + if (StringUtils.isNotBlank(hash)) { + maskingConfig.getCharsScan().setReplaceHash(hash); + } + if (StringUtils.isNotBlank(whitelist)) { + maskingConfig.getCharsScan().setWhiteList(whitelist); + } } MaskingStringLayout layout = new MaskingStringLayout(Charset.forName(charset), maskingConfig); diff --git a/eden-components/eden-spring-boot-starters/eden-idempotent-spring-boot-starter/src/main/java/org/ylzl/eden/idempotent/spring/boot/autoconfigure/RedisTimeToLiveIdempotentAutoConfiguration.java b/eden-components/eden-spring-boot-starters/eden-idempotent-spring-boot-starter/src/main/java/org/ylzl/eden/idempotent/spring/boot/autoconfigure/RedisTimeToLiveIdempotentAutoConfiguration.java index f9c994a80..ff037b386 100644 --- a/eden-components/eden-spring-boot-starters/eden-idempotent-spring-boot-starter/src/main/java/org/ylzl/eden/idempotent/spring/boot/autoconfigure/RedisTimeToLiveIdempotentAutoConfiguration.java +++ b/eden-components/eden-spring-boot-starters/eden-idempotent-spring-boot-starter/src/main/java/org/ylzl/eden/idempotent/spring/boot/autoconfigure/RedisTimeToLiveIdempotentAutoConfiguration.java @@ -19,6 +19,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.config.BeanDefinition; +import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Bean; @@ -39,6 +40,7 @@ */ @ConditionalOnBean(StringRedisTemplate.class) @ConditionalOnProperty(value = RedisTimeToLiveIdempotentAutoConfiguration.ENABLED, havingValue = "true") +@AutoConfigureAfter(TimeToLiveIdempotentAutoConfiguration.class) @RequiredArgsConstructor @Import(TimeToLiveIdempotentAspectRegistrar.class) @Slf4j diff --git a/eden-components/eden-spring-boot-starters/eden-idempotent-spring-boot-starter/src/main/resources/META-INF/spring.factories b/eden-components/eden-spring-boot-starters/eden-idempotent-spring-boot-starter/src/main/resources/META-INF/spring.factories index 0b7e3f3dd..cecb2fb6b 100644 --- a/eden-components/eden-spring-boot-starters/eden-idempotent-spring-boot-starter/src/main/resources/META-INF/spring.factories +++ b/eden-components/eden-spring-boot-starters/eden-idempotent-spring-boot-starter/src/main/resources/META-INF/spring.factories @@ -1,6 +1,6 @@ # Auto Configure -#org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ -# org.ylzl.eden.idempotent.spring.boot.autoconfigure.TimeToLiveIdempotentAutoConfiguration,\ -# org.ylzl.eden.idempotent.spring.boot.autoconfigure.TokenIdempotentAutoConfiguration,\ -# org.ylzl.eden.idempotent.spring.boot.autoconfigure.RedisTimeToLiveIdempotentAutoConfiguration,\ -# org.ylzl.eden.idempotent.spring.boot.autoconfigure.RedisTokenIdempotentAutoConfiguration +org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ + org.ylzl.eden.idempotent.spring.boot.autoconfigure.TimeToLiveIdempotentAutoConfiguration,\ + org.ylzl.eden.idempotent.spring.boot.autoconfigure.TokenIdempotentAutoConfiguration,\ + org.ylzl.eden.idempotent.spring.boot.autoconfigure.RedisTimeToLiveIdempotentAutoConfiguration,\ + org.ylzl.eden.idempotent.spring.boot.autoconfigure.RedisTokenIdempotentAutoConfiguration From a6664e14b98b4b426425743336b2d5bdef83831d Mon Sep 17 00:00:00 2001 From: guoyuanlu Date: Tue, 22 Oct 2024 16:56:07 +0800 Subject: [PATCH 2/2] update --- eden-components/eden-dependencies/pom.xml | 13 +++ .../eden-loki-spring-boot-starter/pom.xml | 57 ++++++++++ .../eden-spring-boot-starters/pom.xml | 1 + .../eden-spring-integration/pom.xml | 23 ++++ .../log4j2/Log4j2LokiAppender.java | 104 ++++++++++++++++++ .../loki/integration/log4j2/package-info.java | 1 + .../integration/logback/package-info.java | 1 + .../spring/integration/loki/package-info.java | 1 + pom.xml | 3 +- 9 files changed, 203 insertions(+), 1 deletion(-) create mode 100644 eden-components/eden-spring-boot-starters/eden-loki-spring-boot-starter/pom.xml create mode 100644 eden-components/eden-spring-integration/src/main/java/org/ylzl/eden/spring/integration/loki/integration/log4j2/Log4j2LokiAppender.java create mode 100644 eden-components/eden-spring-integration/src/main/java/org/ylzl/eden/spring/integration/loki/integration/log4j2/package-info.java create mode 100644 eden-components/eden-spring-integration/src/main/java/org/ylzl/eden/spring/integration/loki/integration/logback/package-info.java create mode 100644 eden-components/eden-spring-integration/src/main/java/org/ylzl/eden/spring/integration/loki/package-info.java diff --git a/eden-components/eden-dependencies/pom.xml b/eden-components/eden-dependencies/pom.xml index 990decee8..07275f7cc 100644 --- a/eden-components/eden-dependencies/pom.xml +++ b/eden-components/eden-dependencies/pom.xml @@ -189,6 +189,7 @@ 2.20.0 0.1.5 6.5 + 1.6.0-m1 0.16.0 @@ -622,6 +623,11 @@ eden-logstash-spring-boot-starter 0.0.1-SNAPSHOT + + io.github.shiyindaxiaojie + eden-loki-spring-boot-starter + 0.0.1-SNAPSHOT + io.github.shiyindaxiaojie eden-metrics-spring-boot-starter @@ -2023,6 +2029,13 @@ + + + com.github.loki4j + loki-logback-appender + ${loki-logback-appender.version} + + diff --git a/eden-components/eden-spring-boot-starters/eden-loki-spring-boot-starter/pom.xml b/eden-components/eden-spring-boot-starters/eden-loki-spring-boot-starter/pom.xml new file mode 100644 index 000000000..def94e8cb --- /dev/null +++ b/eden-components/eden-spring-boot-starters/eden-loki-spring-boot-starter/pom.xml @@ -0,0 +1,57 @@ + + + + + + 4.0.0 + + io.github.shiyindaxiaojie + eden-spring-boot-starters + 0.0.1-SNAPSHOT + ../pom.xml + + eden-loki-spring-boot-starter + jar + eden-loki-spring-boot-starter + Spring Boot Starter For Loki + + + + + io.github.shiyindaxiaojie + eden-spring-boot + + + io.github.shiyindaxiaojie + eden-spring-integration + + + + + org.projectlombok + lombok + true + + + org.mapstruct + mapstruct-processor + true + + + diff --git a/eden-components/eden-spring-boot-starters/pom.xml b/eden-components/eden-spring-boot-starters/pom.xml index 7f9b03464..cbe6f924b 100644 --- a/eden-components/eden-spring-boot-starters/pom.xml +++ b/eden-components/eden-spring-boot-starters/pom.xml @@ -61,6 +61,7 @@ eden-leaf-spring-boot-starter eden-liquibase-spring-boot-starter eden-logstash-spring-boot-starter + eden-loki-spring-boot-starter eden-metrics-spring-boot-starter eden-mongobee-spring-boot-starter eden-mongodb-spring-boot-starter diff --git a/eden-components/eden-spring-integration/pom.xml b/eden-components/eden-spring-integration/pom.xml index 9c2c9663d..b5c517bbe 100644 --- a/eden-components/eden-spring-integration/pom.xml +++ b/eden-components/eden-spring-integration/pom.xml @@ -40,6 +40,12 @@ io.github.shiyindaxiaojie eden-spring-framework + + + logback-classic + ch.qos.logback + + io.github.shiyindaxiaojie @@ -347,6 +353,23 @@ true + + + com.github.loki4j + loki-logback-appender + true + + + ch.qos.logback + logback-core + + + ch.qos.logback + logback-classic + + + + org.spockframework diff --git a/eden-components/eden-spring-integration/src/main/java/org/ylzl/eden/spring/integration/loki/integration/log4j2/Log4j2LokiAppender.java b/eden-components/eden-spring-integration/src/main/java/org/ylzl/eden/spring/integration/loki/integration/log4j2/Log4j2LokiAppender.java new file mode 100644 index 000000000..55e851711 --- /dev/null +++ b/eden-components/eden-spring-integration/src/main/java/org/ylzl/eden/spring/integration/loki/integration/log4j2/Log4j2LokiAppender.java @@ -0,0 +1,104 @@ +package org.ylzl.eden.spring.integration.loki.integration.log4j2; + +import com.dianping.cat.Cat; +import com.dianping.cat.message.Message; +import lombok.SneakyThrows; +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.core.*; +import org.apache.logging.log4j.core.appender.AbstractAppender; +import org.apache.logging.log4j.core.appender.AppenderLoggingException; +import org.apache.logging.log4j.core.config.Property; +import org.apache.logging.log4j.core.config.plugins.Plugin; +import org.apache.logging.log4j.core.config.plugins.PluginAttribute; +import org.apache.logging.log4j.core.config.plugins.PluginElement; +import org.apache.logging.log4j.core.config.plugins.PluginFactory; +import org.apache.logging.log4j.core.layout.JsonLayout; +import org.apache.logging.log4j.core.layout.PatternLayout; +import org.apache.logging.log4j.core.util.Booleans; +import org.ylzl.eden.commons.env.Charsets; +import org.ylzl.eden.spring.integration.cat.CatConstants; + +import java.io.Serializable; +import java.io.UnsupportedEncodingException; + +/** + * Log4j2 附加器 + * + * @author gyl + * @since 2.4.13 + */ +@Plugin(name = Log4j2LokiAppender.NAME, category = Core.CATEGORY_NAME, elementType = Appender.ELEMENT_TYPE, printObject = true) +public class Log4j2LokiAppender extends AbstractAppender { + + public static final String NAME = "Loki"; + + private static final int DEFAULT_MAX_LENGTH = 500; + + private final Level level; + + private final Integer maxLength; + + public Log4j2LokiAppender(String name, Filter filter, Layout layout, + boolean ignoreExceptions, Property[] properties, Level level, Integer maxLength) { + super(name, filter, layout, ignoreExceptions, properties); + this.level = level; + this.maxLength = maxLength != null && maxLength > 0 ? maxLength : DEFAULT_MAX_LENGTH; + } + + @Override + public void append(LogEvent event) { + try { + if (event.getLevel().isMoreSpecificThan(level)) { + // TODO + } + } catch (Exception ex) { + if (!ignoreExceptions()) { + throw new AppenderLoggingException(ex); + } + } + } + + @SneakyThrows(UnsupportedEncodingException.class) + private void tryAppend(final LogEvent event) { + Layout layout = getLayout(); + byte[] data; + if (layout instanceof JsonLayout) { + final byte[] header = layout.getHeader(); + final byte[] body = layout.toByteArray(event); + data = new byte[header.length + body.length]; + System.arraycopy(header, 0, data, 0, header.length); + System.arraycopy(body, 0, data, header.length, body.length); + } else { + data = layout.toByteArray(event); + } + String message = data.length > maxLength ? + new String(data, 0, maxLength, Charsets.UTF_8_NAME) : + new String(data, Charsets.UTF_8_NAME); + Cat.logEvent(CatConstants.TYPE_LOG_LOG4J2, event.getLevel().name(), Message.SUCCESS, message); + } + + @PluginFactory + public static Log4j2LokiAppender build( + @PluginAttribute("name") String name, + @PluginElement("Filter") Filter filter, + @PluginElement("Layout") Layout layout, + @PluginAttribute("ignoreExceptions") String ignore, + @PluginAttribute("level") Level level, + @PluginAttribute("maxLength") Integer maxLength) { + + if (name == null) { + return null; + } + if (layout == null) { + layout = PatternLayout.createDefaultLayout(); + } + if (level == null) { + level = Level.ERROR; + } + if (maxLength == null) { + maxLength = DEFAULT_MAX_LENGTH; + } + boolean ignoreExceptions = Booleans.parseBoolean(ignore, true); + return new Log4j2LokiAppender(name, filter, layout, ignoreExceptions, null, level, maxLength); + } +} diff --git a/eden-components/eden-spring-integration/src/main/java/org/ylzl/eden/spring/integration/loki/integration/log4j2/package-info.java b/eden-components/eden-spring-integration/src/main/java/org/ylzl/eden/spring/integration/loki/integration/log4j2/package-info.java new file mode 100644 index 000000000..a6c59f726 --- /dev/null +++ b/eden-components/eden-spring-integration/src/main/java/org/ylzl/eden/spring/integration/loki/integration/log4j2/package-info.java @@ -0,0 +1 @@ +package org.ylzl.eden.spring.integration.loki.integration.log4j2; diff --git a/eden-components/eden-spring-integration/src/main/java/org/ylzl/eden/spring/integration/loki/integration/logback/package-info.java b/eden-components/eden-spring-integration/src/main/java/org/ylzl/eden/spring/integration/loki/integration/logback/package-info.java new file mode 100644 index 000000000..e338009a9 --- /dev/null +++ b/eden-components/eden-spring-integration/src/main/java/org/ylzl/eden/spring/integration/loki/integration/logback/package-info.java @@ -0,0 +1 @@ +package org.ylzl.eden.spring.integration.loki.integration.logback; diff --git a/eden-components/eden-spring-integration/src/main/java/org/ylzl/eden/spring/integration/loki/package-info.java b/eden-components/eden-spring-integration/src/main/java/org/ylzl/eden/spring/integration/loki/package-info.java new file mode 100644 index 000000000..7d9d3407c --- /dev/null +++ b/eden-components/eden-spring-integration/src/main/java/org/ylzl/eden/spring/integration/loki/package-info.java @@ -0,0 +1 @@ +package org.ylzl.eden.spring.integration.loki; diff --git a/pom.xml b/pom.xml index 98c994316..242abcf8f 100644 --- a/pom.xml +++ b/pom.xml @@ -38,7 +38,8 @@ eden-components eden-plugins eden-tests - + eden-components/eden-spring-boot-starters/eden-loki-spring-boot-starter +