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 126c12eb103 Refactor LoggingUtils to move out codes related to logback 
(#24730)
126c12eb103 is described below

commit 126c12eb1035f34dd065f0b616efc06165155b66
Author: Zheng Feng <[email protected]>
AuthorDate: Wed Mar 22 10:37:24 2023 +0800

    Refactor LoggingUtils to move out codes related to logback (#24730)
---
 .../utils/{LoggingUtils.java => LogbackUtils.java} | 77 ++------------------
 .../shardingsphere/logging/utils/LoggingUtils.java | 83 ----------------------
 2 files changed, 6 insertions(+), 154 deletions(-)

diff --git 
a/kernel/logging/core/src/main/java/org/apache/shardingsphere/logging/utils/LoggingUtils.java
 
b/kernel/logging/core/src/main/java/org/apache/shardingsphere/logging/utils/LogbackUtils.java
similarity index 57%
copy from 
kernel/logging/core/src/main/java/org/apache/shardingsphere/logging/utils/LoggingUtils.java
copy to 
kernel/logging/core/src/main/java/org/apache/shardingsphere/logging/utils/LogbackUtils.java
index ddac0d004e2..166c152cbb1 100644
--- 
a/kernel/logging/core/src/main/java/org/apache/shardingsphere/logging/utils/LoggingUtils.java
+++ 
b/kernel/logging/core/src/main/java/org/apache/shardingsphere/logging/utils/LogbackUtils.java
@@ -28,82 +28,17 @@ import ch.qos.logback.core.OutputStreamAppender;
 import ch.qos.logback.core.util.DynamicClassLoadingException;
 import ch.qos.logback.core.util.IncompatibleClassException;
 import ch.qos.logback.core.util.OptionHelper;
-import lombok.AccessLevel;
-import lombok.NoArgsConstructor;
 import lombok.SneakyThrows;
-import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
-import 
org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
 import org.apache.shardingsphere.logging.config.LoggingRuleConfiguration;
-import org.apache.shardingsphere.logging.constant.LoggingConstants;
 import org.apache.shardingsphere.logging.logger.ShardingSphereAppender;
 import org.apache.shardingsphere.logging.logger.ShardingSphereLogger;
-import org.apache.shardingsphere.logging.rule.LoggingRule;
 import org.slf4j.LoggerFactory;
 
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.Optional;
-import java.util.Properties;
 
-/**
- * Logging utils.
- */
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
-public class LoggingUtils {
-    
-    /**
-     * Get ShardingSphere-SQL logger.
-     *
-     * @param globalRuleMetaData ShardingSphere global rule metaData
-     * @return ShardingSphere-SQL logger
-     */
-    public static Optional<ShardingSphereLogger> getSQLLogger(final 
ShardingSphereRuleMetaData globalRuleMetaData) {
-        return 
globalRuleMetaData.findSingleRule(LoggingRule.class).isPresent() ? 
getSQLLogger(globalRuleMetaData.getSingleRule(LoggingRule.class).getConfiguration())
 : Optional.empty();
-    }
-    
-    /**
-     * Get ShardingSphere-SQL logger.
-     *
-     * @param loggingRuleConfiguration logging global rule configuration
-     * @return ShardingSphere-SQL logger
-     */
-    public static Optional<ShardingSphereLogger> getSQLLogger(final 
LoggingRuleConfiguration loggingRuleConfiguration) {
-        return loggingRuleConfiguration.getLoggers().stream()
-                .filter(each -> 
LoggingConstants.SQL_LOG_TOPIC.equalsIgnoreCase(each.getLoggerName())).findFirst();
-    }
-    
-    /**
-     * Synchronize the log-related configuration in logging rule and props.
-     * Use the configuration in the logging rule first.
-     *
-     * @param loggingRuleConfiguration logging global rule configuration
-     * @param props configuration properties
-     */
-    public static void syncLoggingConfig(final LoggingRuleConfiguration 
loggingRuleConfiguration, final ConfigurationProperties props) {
-        LoggingUtils.getSQLLogger(loggingRuleConfiguration).ifPresent(option 
-> {
-            Properties loggerProperties = option.getProps();
-            syncPropsToLoggingRule(loggerProperties, props);
-            syncLoggingRuleToProps(loggerProperties, props);
-        });
-    }
-    
-    private static void syncPropsToLoggingRule(final Properties 
loggerProperties, final ConfigurationProperties props) {
-        if (!loggerProperties.containsKey(LoggingConstants.SQL_LOG_ENABLE) && 
props.getProps().containsKey(LoggingConstants.SQL_SHOW)) {
-            loggerProperties.setProperty(LoggingConstants.SQL_LOG_ENABLE, 
props.getProps().get(LoggingConstants.SQL_SHOW).toString());
-        }
-        if (!loggerProperties.containsKey(LoggingConstants.SQL_LOG_SIMPLE) && 
props.getProps().containsKey(LoggingConstants.SQL_SIMPLE)) {
-            loggerProperties.setProperty(LoggingConstants.SQL_LOG_SIMPLE, 
props.getProps().get(LoggingConstants.SQL_SIMPLE).toString());
-        }
-    }
-    
-    private static void syncLoggingRuleToProps(final Properties 
loggerProperties, final ConfigurationProperties props) {
-        if (loggerProperties.containsKey(LoggingConstants.SQL_LOG_ENABLE)) {
-            props.getProps().setProperty(LoggingConstants.SQL_SHOW, 
loggerProperties.get(LoggingConstants.SQL_LOG_ENABLE).toString());
-        }
-        if (loggerProperties.containsKey(LoggingConstants.SQL_LOG_SIMPLE)) {
-            props.getProps().setProperty(LoggingConstants.SQL_SIMPLE, 
loggerProperties.get(LoggingConstants.SQL_LOG_SIMPLE).toString());
-        }
-    }
+public class LogbackUtils {
     
     /**
      * Refresh logger context with logging rule.
@@ -112,8 +47,8 @@ public class LoggingUtils {
      */
     public static void refreshLogger(final LoggingRuleConfiguration 
loggingRuleConfiguration) {
         LoggerContext loggerContext = (LoggerContext) 
LoggerFactory.getILoggerFactory();
-        configLoggers(loggingRuleConfiguration, loggerContext);
-        startRootLogger(loggerContext);
+        LogbackUtils.configLoggers(loggingRuleConfiguration, loggerContext);
+        LogbackUtils.startRootLogger(loggerContext);
     }
     
     private static void configLoggers(final LoggingRuleConfiguration 
loggingRuleConfiguration, final LoggerContext loggerContext) {
@@ -122,7 +57,7 @@ public class LoggingUtils {
             Logger logger = loggerContext.getLogger(each.getLoggerName());
             logger.setLevel(Level.valueOf(each.getLevel()));
             logger.setAdditive(each.getAdditivity());
-            addAppender(logger, loggingRuleConfiguration, 
each.getAppenderName());
+            LogbackUtils.addAppender(logger, loggingRuleConfiguration, 
each.getAppenderName());
         });
     }
     
@@ -138,7 +73,7 @@ public class LoggingUtils {
             Appender<ILoggingEvent> appender = (Appender<ILoggingEvent>) 
OptionHelper.instantiateByClassName(shardingSphereAppender.getAppenderClass(), 
Appender.class, logger.getLoggerContext());
             appender.setContext(logger.getLoggerContext());
             appender.setName(appenderName);
-            addEncoder(appender, shardingSphereAppender);
+            LogbackUtils.addEncoder(appender, shardingSphereAppender);
             appender.start();
             logger.detachAndStopAllAppenders();
             logger.addAppender(appender);
@@ -152,7 +87,7 @@ public class LoggingUtils {
             patternLayoutEncoder.setContext(appender.getContext());
             
patternLayoutEncoder.setPattern(shardingSphereAppender.getPattern());
             outputStreamAppender.setEncoder(patternLayoutEncoder);
-            setFileOutput(outputStreamAppender, shardingSphereAppender);
+            LogbackUtils.setFileOutput(outputStreamAppender, 
shardingSphereAppender);
             patternLayoutEncoder.start();
         }
     }
diff --git 
a/kernel/logging/core/src/main/java/org/apache/shardingsphere/logging/utils/LoggingUtils.java
 
b/kernel/logging/core/src/main/java/org/apache/shardingsphere/logging/utils/LoggingUtils.java
index ddac0d004e2..0e4805903dc 100644
--- 
a/kernel/logging/core/src/main/java/org/apache/shardingsphere/logging/utils/LoggingUtils.java
+++ 
b/kernel/logging/core/src/main/java/org/apache/shardingsphere/logging/utils/LoggingUtils.java
@@ -17,31 +17,15 @@
 
 package org.apache.shardingsphere.logging.utils;
 
-import ch.qos.logback.classic.Level;
-import ch.qos.logback.classic.Logger;
-import ch.qos.logback.classic.LoggerContext;
-import ch.qos.logback.classic.encoder.PatternLayoutEncoder;
-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.util.DynamicClassLoadingException;
-import ch.qos.logback.core.util.IncompatibleClassException;
-import ch.qos.logback.core.util.OptionHelper;
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
-import lombok.SneakyThrows;
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import 
org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
 import org.apache.shardingsphere.logging.config.LoggingRuleConfiguration;
 import org.apache.shardingsphere.logging.constant.LoggingConstants;
-import org.apache.shardingsphere.logging.logger.ShardingSphereAppender;
 import org.apache.shardingsphere.logging.logger.ShardingSphereLogger;
 import org.apache.shardingsphere.logging.rule.LoggingRule;
-import org.slf4j.LoggerFactory;
 
-import java.util.Collection;
-import java.util.Iterator;
 import java.util.Optional;
 import java.util.Properties;
 
@@ -104,71 +88,4 @@ public class LoggingUtils {
             props.getProps().setProperty(LoggingConstants.SQL_SIMPLE, 
loggerProperties.get(LoggingConstants.SQL_LOG_SIMPLE).toString());
         }
     }
-    
-    /**
-     * Refresh logger context with logging rule.
-     *
-     * @param loggingRuleConfiguration logging global rule configuration
-     */
-    public static void refreshLogger(final LoggingRuleConfiguration 
loggingRuleConfiguration) {
-        LoggerContext loggerContext = (LoggerContext) 
LoggerFactory.getILoggerFactory();
-        configLoggers(loggingRuleConfiguration, loggerContext);
-        startRootLogger(loggerContext);
-    }
-    
-    private static void configLoggers(final LoggingRuleConfiguration 
loggingRuleConfiguration, final LoggerContext loggerContext) {
-        Collection<ShardingSphereLogger> loggers = 
loggingRuleConfiguration.getLoggers();
-        loggers.forEach(each -> {
-            Logger logger = loggerContext.getLogger(each.getLoggerName());
-            logger.setLevel(Level.valueOf(each.getLevel()));
-            logger.setAdditive(each.getAdditivity());
-            addAppender(logger, loggingRuleConfiguration, 
each.getAppenderName());
-        });
-    }
-    
-    @SneakyThrows({IncompatibleClassException.class, 
DynamicClassLoadingException.class})
-    @SuppressWarnings("unchecked")
-    private static void addAppender(final Logger logger, final 
LoggingRuleConfiguration loggingRuleConfiguration, final String appenderName) {
-        if (null == appenderName) {
-            return;
-        }
-        Optional<ShardingSphereAppender> shardingSphereAppenderOptional = 
loggingRuleConfiguration.getAppenders().stream().filter(each -> 
appenderName.equals(each.getAppenderName())).findFirst();
-        if (shardingSphereAppenderOptional.isPresent()) {
-            ShardingSphereAppender shardingSphereAppender = 
shardingSphereAppenderOptional.get();
-            Appender<ILoggingEvent> appender = (Appender<ILoggingEvent>) 
OptionHelper.instantiateByClassName(shardingSphereAppender.getAppenderClass(), 
Appender.class, logger.getLoggerContext());
-            appender.setContext(logger.getLoggerContext());
-            appender.setName(appenderName);
-            addEncoder(appender, shardingSphereAppender);
-            appender.start();
-            logger.detachAndStopAllAppenders();
-            logger.addAppender(appender);
-        }
-    }
-    
-    private static void addEncoder(final Appender<ILoggingEvent> appender, 
final ShardingSphereAppender shardingSphereAppender) {
-        if (appender instanceof OutputStreamAppender) {
-            OutputStreamAppender<ILoggingEvent> outputStreamAppender = 
(OutputStreamAppender<ILoggingEvent>) appender;
-            PatternLayoutEncoder patternLayoutEncoder = new 
PatternLayoutEncoder();
-            patternLayoutEncoder.setContext(appender.getContext());
-            
patternLayoutEncoder.setPattern(shardingSphereAppender.getPattern());
-            outputStreamAppender.setEncoder(patternLayoutEncoder);
-            setFileOutput(outputStreamAppender, shardingSphereAppender);
-            patternLayoutEncoder.start();
-        }
-    }
-    
-    private static void setFileOutput(final 
OutputStreamAppender<ILoggingEvent> outputStreamAppender, final 
ShardingSphereAppender shardingSphereAppender) {
-        if (outputStreamAppender instanceof FileAppender) {
-            FileAppender<ILoggingEvent> fileAppender = 
(FileAppender<ILoggingEvent>) outputStreamAppender;
-            fileAppender.setFile(shardingSphereAppender.getFile());
-        }
-    }
-    
-    private static void startRootLogger(final LoggerContext loggerContext) {
-        Logger rootLogger = loggerContext.getLogger(Logger.ROOT_LOGGER_NAME);
-        Iterator<Appender<ILoggingEvent>> appenderIterator = 
rootLogger.iteratorForAppenders();
-        while (appenderIterator.hasNext()) {
-            appenderIterator.next().start();
-        }
-    }
 }

Reply via email to