From 0ad9d9773113292ee2f08d96cd82bfd5313c9150 Mon Sep 17 00:00:00 2001 From: linghengqian Date: Tue, 6 Aug 2024 23:36:02 +0800 Subject: [PATCH] Refactor `DefaultLoggingRuleConfigurationBuilder` to reduce usage of `logback-classic` --- kernel/logging/core/pom.xml | 2 +- ...efaultLoggingRuleConfigurationBuilder.java | 33 ++++++++++--------- pom.xml | 1 + 3 files changed, 20 insertions(+), 16 deletions(-) diff --git a/kernel/logging/core/pom.xml b/kernel/logging/core/pom.xml index 0f9a34a777526..8f257b72147eb 100644 --- a/kernel/logging/core/pom.xml +++ b/kernel/logging/core/pom.xml @@ -48,7 +48,7 @@ ch.qos.logback logback-classic - provided + compile diff --git a/kernel/logging/core/src/main/java/org/apache/shardingsphere/logging/rule/builder/DefaultLoggingRuleConfigurationBuilder.java b/kernel/logging/core/src/main/java/org/apache/shardingsphere/logging/rule/builder/DefaultLoggingRuleConfigurationBuilder.java index e736c88b38479..0b50b3382c543 100644 --- a/kernel/logging/core/src/main/java/org/apache/shardingsphere/logging/rule/builder/DefaultLoggingRuleConfigurationBuilder.java +++ b/kernel/logging/core/src/main/java/org/apache/shardingsphere/logging/rule/builder/DefaultLoggingRuleConfigurationBuilder.java @@ -17,24 +17,24 @@ package org.apache.shardingsphere.logging.rule.builder; -import org.slf4j.Logger; import ch.qos.logback.classic.LoggerContext; -import ch.qos.logback.classic.PatternLayout; -import ch.qos.logback.classic.spi.ILoggingEvent; import ch.qos.logback.core.Appender; import ch.qos.logback.core.FileAppender; import ch.qos.logback.core.OutputStreamAppender; import ch.qos.logback.core.encoder.LayoutWrappingEncoder; +import ch.qos.logback.core.pattern.PatternLayoutBase; import org.apache.shardingsphere.infra.rule.builder.global.DefaultGlobalRuleConfigurationBuilder; import org.apache.shardingsphere.logging.config.LoggingRuleConfiguration; import org.apache.shardingsphere.logging.constant.LoggingOrder; import org.apache.shardingsphere.logging.logger.ShardingSphereAppender; import org.apache.shardingsphere.logging.logger.ShardingSphereLogger; +import org.slf4j.ILoggerFactory; +import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.Collection; +import java.util.Collections; import java.util.Comparator; -import java.util.Iterator; import java.util.Objects; import java.util.TreeSet; import java.util.stream.Collectors; @@ -46,8 +46,12 @@ public final class DefaultLoggingRuleConfigurationBuilder implements DefaultGlob @Override public LoggingRuleConfiguration build() { - LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory(); - return new LoggingRuleConfiguration(getDefaultLoggers(loggerContext), getDefaultAppenders(loggerContext)); + ILoggerFactory iLoggerFactory = LoggerFactory.getILoggerFactory(); + if ("ch.qos.logback.classic.LoggerContext".equals(iLoggerFactory.getClass().getName())) { + LoggerContext loggerContext = (LoggerContext) iLoggerFactory; + return new LoggingRuleConfiguration(getDefaultLoggers(loggerContext), getDefaultAppenders(loggerContext)); + } + return new LoggingRuleConfiguration(Collections.emptyList(), Collections.emptySet()); } private Collection getDefaultLoggers(final LoggerContext loggerContext) { @@ -59,9 +63,8 @@ private Collection getDefaultLoggers(final LoggerContext l private Collection getDefaultAppenders(final LoggerContext loggerContext) { return loggerContext.getLoggerList().stream().filter(each -> null != each.getLevel()).filter(each -> !Logger.ROOT_LOGGER_NAME.equalsIgnoreCase(each.getName())).map(each -> { - Iterator> appenderIterator = each.iteratorForAppenders(); - if (appenderIterator.hasNext()) { - Appender appender = appenderIterator.next(); + if (each.iteratorForAppenders().hasNext()) { + Appender appender = each.iteratorForAppenders().next(); ShardingSphereAppender shardingSphereAppender = new ShardingSphereAppender(appender.getName(), appender.getClass().getName(), getAppenderPattern(appender)); getFileOutput(appender, shardingSphereAppender); return shardingSphereAppender; @@ -70,19 +73,19 @@ private Collection getDefaultAppenders(final LoggerConte }).filter(Objects::nonNull).collect(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(ShardingSphereAppender::getAppenderName)))); } - private String getAppenderPattern(final Appender appender) { + private String getAppenderPattern(final Appender appender) { if (appender instanceof OutputStreamAppender) { - OutputStreamAppender consoleAppender = (OutputStreamAppender) appender; - LayoutWrappingEncoder encoder = (LayoutWrappingEncoder) consoleAppender.getEncoder(); - PatternLayout layout = (PatternLayout) encoder.getLayout(); + OutputStreamAppender consoleAppender = (OutputStreamAppender) appender; + LayoutWrappingEncoder encoder = (LayoutWrappingEncoder) consoleAppender.getEncoder(); + PatternLayoutBase layout = (PatternLayoutBase) encoder.getLayout(); return layout.getPattern(); } return ""; } - private void getFileOutput(final Appender appender, final ShardingSphereAppender shardingSphereAppender) { + private void getFileOutput(final Appender appender, final ShardingSphereAppender shardingSphereAppender) { if (appender instanceof FileAppender) { - shardingSphereAppender.setFile(((FileAppender) appender).getFile()); + shardingSphereAppender.setFile(((FileAppender) appender).getFile()); } } diff --git a/pom.xml b/pom.xml index c0f9abc15bcfc..8de7c17b4d09e 100644 --- a/pom.xml +++ b/pom.xml @@ -990,6 +990,7 @@ ch.qos.logback logback-classic + test com.cedarsoftware