This is an automated email from the ASF dual-hosted git repository.

jianglongtao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git


The following commit(s) were added to refs/heads/master by this push:
     new 42169117063 Refactor `DefaultLoggingRuleConfigurationBuilder` to 
reduce usage of `logback-classic` (#32418)
42169117063 is described below

commit 421691170632260b6e7bedbf3caf83d14ebbdc80
Author: Ling Hengqian <[email protected]>
AuthorDate: Wed Aug 7 09:56:36 2024 +0800

    Refactor `DefaultLoggingRuleConfigurationBuilder` to reduce usage of 
`logback-classic` (#32418)
---
 kernel/logging/core/pom.xml                        |  2 +-
 .../DefaultLoggingRuleConfigurationBuilder.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 0f9a34a7775..8f257b72147 100644
--- a/kernel/logging/core/pom.xml
+++ b/kernel/logging/core/pom.xml
@@ -48,7 +48,7 @@
         <dependency>
             <groupId>ch.qos.logback</groupId>
             <artifactId>logback-classic</artifactId>
-            <scope>provided</scope>
+            <scope>compile</scope>
         </dependency>
     </dependencies>
 </project>
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 e736c88b384..0b50b3382c5 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<ShardingSphereLogger> getDefaultLoggers(final 
LoggerContext loggerContext) {
@@ -59,9 +63,8 @@ public final class DefaultLoggingRuleConfigurationBuilder 
implements DefaultGlob
     
     private Collection<ShardingSphereAppender> 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<Appender<ILoggingEvent>> appenderIterator = 
each.iteratorForAppenders();
-            if (appenderIterator.hasNext()) {
-                Appender<ILoggingEvent> 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 @@ public final class DefaultLoggingRuleConfigurationBuilder 
implements DefaultGlob
         }).filter(Objects::nonNull).collect(Collectors.toCollection(() -> new 
TreeSet<>(Comparator.comparing(ShardingSphereAppender::getAppenderName))));
     }
     
-    private String getAppenderPattern(final Appender<ILoggingEvent> appender) {
+    private String getAppenderPattern(final Appender<?> appender) {
         if (appender instanceof OutputStreamAppender) {
-            OutputStreamAppender<ILoggingEvent> consoleAppender = 
(OutputStreamAppender<ILoggingEvent>) appender;
-            LayoutWrappingEncoder<ILoggingEvent> encoder = 
(LayoutWrappingEncoder<ILoggingEvent>) 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<ILoggingEvent> appender, final 
ShardingSphereAppender shardingSphereAppender) {
+    private void getFileOutput(final Appender<?> appender, final 
ShardingSphereAppender shardingSphereAppender) {
         if (appender instanceof FileAppender) {
-            shardingSphereAppender.setFile(((FileAppender<ILoggingEvent>) 
appender).getFile());
+            shardingSphereAppender.setFile(((FileAppender<?>) 
appender).getFile());
         }
     }
     
diff --git a/pom.xml b/pom.xml
index c0f9abc15bc..8de7c17b4d0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -990,6 +990,7 @@
         <dependency>
             <groupId>ch.qos.logback</groupId>
             <artifactId>logback-classic</artifactId>
+            <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>com.cedarsoftware</groupId>

Reply via email to