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>