[ISSUE #5484] Replace Logging Module with Shaded Logback (#5524)

* Remove ClientLogger

* WIP

* WIP

* Rename logger to log

* Make it compile

* WIP

* Fix bazel to use shaded slf4j

* Fix DeleteExpiredCommitLogSubCommandTest

* Fix pom.xml duplication

* Fix maven deps

* Add test logback configuration file

* Fix unit test output

* Fix logback configuration file

* All logging are made on top of slf4j

* Fix test log configuration file name

* Fix test log configuration file name for test module

* All logging are shaded slf4j targeted

* DLedger has an explicit dependency on slf4j

* Fix DLedger

* Fix DLeader issue

* Move logback configuration files to each module

Co-authored-by: Li Zhanhui <lizhanhui@gmail.com>
diff --git a/.gitignore b/.gitignore
index ad431b3..c20f4bf 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,7 +4,7 @@
 .settings/

 target/

 devenv

-*.log*

+*.log.*

 *.iml

 .idea/

 *.versionsBackup

diff --git a/WORKSPACE b/WORKSPACE
index fe16f04..38e846a 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -43,7 +43,7 @@
         "com.alibaba:fastjson:1.2.76",
         "org.hamcrest:hamcrest-library:1.3",
         "io.netty:netty-all:4.1.65.Final",
-        "org.slf4j:slf4j-api:1.7.7",
+        "org.slf4j:slf4j-api:1.7.33",
         "org.assertj:assertj-core:3.22.0",
         "org.mockito:mockito-core:3.10.0",
         "com.github.luben:zstd-jni:1.5.2-2",
@@ -64,7 +64,6 @@
         "org.yaml:snakeyaml:1.30",
         "commons-codec:commons-codec:1.13",
         "commons-io:commons-io:2.7",
-        "log4j:log4j:1.2.17",
         "com.google.truth:truth:0.30",
         "org.bouncycastle:bcpkix-jdk15on:1.69",
         "com.google.code.gson:gson:2.8.9",
@@ -94,6 +93,8 @@
         "io.opentelemetry:opentelemetry-api:1.19.0",
         "io.opentelemetry:opentelemetry-sdk-metrics:1.19.0",
         "io.opentelemetry:opentelemetry-sdk-common:1.19.0",
+        "io.github.aliyun-mq:rocketmq-slf4j-api:1.0.1",
+        "io.github.aliyun-mq:rocketmq-logback-classic:1.0.1",
     ],
     fetch_sources = True,
     repositories = [
diff --git a/acl/BUILD.bazel b/acl/BUILD.bazel
index ca0517d..fd9e45d 100644
--- a/acl/BUILD.bazel
+++ b/acl/BUILD.bazel
@@ -22,7 +22,6 @@
     visibility = ["//visibility:public"],
     deps = [
         "//common",
-        "//logging",
         "//remoting",
         "//srvutil",
         "@maven//:com_alibaba_fastjson",
@@ -36,6 +35,7 @@
         "@maven//:org_apache_rocketmq_rocketmq_proto",
         "@maven//:org_lz4_lz4_java",
         "@maven//:org_yaml_snakeyaml",
+        "@maven//:io_github_aliyun_mq_rocketmq_slf4j_api",
     ],
 )
 
diff --git a/acl/pom.xml b/acl/pom.xml
index 90ce2c8..9a3c12e 100644
--- a/acl/pom.xml
+++ b/acl/pom.xml
@@ -30,18 +30,25 @@
         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>rocketmq-remoting</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>rocketmq-logging</artifactId>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>rocketmq-common</artifactId>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>rocketmq-srvutil</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>io.github.aliyun-mq</groupId>
+            <artifactId>rocketmq-slf4j-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.github.aliyun-mq</groupId>
+            <artifactId>rocketmq-logback-classic</artifactId>
         </dependency>
         <dependency>
             <groupId>org.yaml</groupId>
@@ -55,17 +62,6 @@
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-lang3</artifactId>
         </dependency>
-
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-api</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>ch.qos.logback</groupId>
-            <artifactId>logback-classic</artifactId>
-            <scope>test</scope>
-        </dependency>
         <dependency>
             <groupId>commons-validator</groupId>
             <artifactId>commons-validator</artifactId>
diff --git a/acl/src/main/java/org/apache/rocketmq/acl/common/AclSigner.java b/acl/src/main/java/org/apache/rocketmq/acl/common/AclSigner.java
index 9953cca..98964cd 100644
--- a/acl/src/main/java/org/apache/rocketmq/acl/common/AclSigner.java
+++ b/acl/src/main/java/org/apache/rocketmq/acl/common/AclSigner.java
@@ -22,13 +22,13 @@
 import javax.crypto.spec.SecretKeySpec;
 import org.apache.commons.codec.binary.Base64;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 public class AclSigner {
     public static final Charset DEFAULT_CHARSET = StandardCharsets.UTF_8;
     public static final SigningAlgorithm DEFAULT_ALGORITHM = SigningAlgorithm.HmacSHA1;
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.ROCKETMQ_AUTHORIZE_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.ROCKETMQ_AUTHORIZE_LOGGER_NAME);
     private static final int CAL_SIGNATURE_FAILED = 10015;
     private static final String CAL_SIGNATURE_FAILED_MSG = "[%s:signature-failed] unable to calculate a request signature. error=%s";
 
diff --git a/acl/src/main/java/org/apache/rocketmq/acl/common/AclUtils.java b/acl/src/main/java/org/apache/rocketmq/acl/common/AclUtils.java
index 0f31ab8..230aba0 100644
--- a/acl/src/main/java/org/apache/rocketmq/acl/common/AclUtils.java
+++ b/acl/src/main/java/org/apache/rocketmq/acl/common/AclUtils.java
@@ -27,8 +27,8 @@
 
 import org.apache.commons.lang3.StringUtils;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.RPCHook;
 import org.apache.rocketmq.remoting.protocol.RemotingCommand;
 import org.yaml.snakeyaml.Yaml;
@@ -37,7 +37,7 @@
 
 public class AclUtils {
 
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.COMMON_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.COMMON_LOGGER_NAME);
 
     public static byte[] combineRequestContent(RemotingCommand request, SortedMap<String, String> fieldsMap) {
         try {
diff --git a/acl/src/main/java/org/apache/rocketmq/acl/plain/PlainPermissionManager.java b/acl/src/main/java/org/apache/rocketmq/acl/plain/PlainPermissionManager.java
index b41c34e..a506b83 100644
--- a/acl/src/main/java/org/apache/rocketmq/acl/plain/PlainPermissionManager.java
+++ b/acl/src/main/java/org/apache/rocketmq/acl/plain/PlainPermissionManager.java
@@ -45,14 +45,14 @@
 import org.apache.rocketmq.common.PlainAccessConfig;
 import org.apache.rocketmq.common.constant.LoggerName;
 import org.apache.rocketmq.common.topic.TopicValidator;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.protocol.DataVersion;
 import org.apache.rocketmq.srvutil.AclFileWatchService;
 
 public class PlainPermissionManager {
 
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.COMMON_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.COMMON_LOGGER_NAME);
 
     private String fileHome = System.getProperty(MixAll.ROCKETMQ_HOME_PROPERTY,
         System.getenv(MixAll.ROCKETMQ_HOME_ENV));
diff --git a/acl/src/main/java/org/apache/rocketmq/acl/plain/RemoteAddressStrategyFactory.java b/acl/src/main/java/org/apache/rocketmq/acl/plain/RemoteAddressStrategyFactory.java
index f2caf24..eb3a8c3 100644
--- a/acl/src/main/java/org/apache/rocketmq/acl/plain/RemoteAddressStrategyFactory.java
+++ b/acl/src/main/java/org/apache/rocketmq/acl/plain/RemoteAddressStrategyFactory.java
@@ -23,12 +23,12 @@
 import org.apache.rocketmq.acl.common.AclException;
 import org.apache.rocketmq.acl.common.AclUtils;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 public class RemoteAddressStrategyFactory {
 
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.COMMON_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.COMMON_LOGGER_NAME);
 
     public static final NullRemoteAddressStrategy NULL_NET_ADDRESS_STRATEGY = new NullRemoteAddressStrategy();
 
diff --git a/acl/src/test/resources/logback-test.xml b/acl/src/test/resources/logback-test.xml
deleted file mode 100644
index e556c64..0000000
--- a/acl/src/test/resources/logback-test.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-  -->
-<configuration>
-
-    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
-        <encoder>
-            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n</pattern>
-            <charset class="java.nio.charset.Charset">UTF-8</charset>
-        </encoder>
-    </appender>
-
-    <logger name="RocketmqCommon" level="INFO" additivity="false">
-        <appender-ref ref="STDOUT"/>
-    </logger>
-    <root level="INFO">
-        <appender-ref ref="STDOUT"/>
-    </root>
-
-</configuration>
diff --git a/store/src/test/resources/logback-test.xml b/acl/src/test/resources/rmq.logback-test.xml
similarity index 64%
copy from store/src/test/resources/logback-test.xml
copy to acl/src/test/resources/rmq.logback-test.xml
index a033816..c3ec0d1 100644
--- a/store/src/test/resources/logback-test.xml
+++ b/acl/src/test/resources/rmq.logback-test.xml
@@ -17,19 +17,20 @@
   -->
 <configuration>
 
-    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
-        <encoder>
-            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n</pattern>
-            <charset class="java.nio.charset.Charset">UTF-8</charset>
-        </encoder>
+    <appender name="CONSOLE" class="org.apache.rocketmq.shade.ch.qos.logback.core.ConsoleAppender">
+        <layout class="org.apache.rocketmq.shade.ch.qos.logback.classic.PatternLayout">
+            <Pattern>
+                %d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n
+            </Pattern>
+        </layout>
     </appender>
 
-    <logger name="org.apache.rocketmq.store" level="WARN" additivity="false">
-        <appender-ref ref="STDOUT"/>
+    <logger name="org.apache.rocketmq" level="error" additivity="false">
+        <appender-ref ref="CONSOLE"/>
     </logger>
 
-    <root level="OFF">
-        <appender-ref ref="STDOUT"/>
+    <root level="error">
+        <appender-ref ref="CONSOLE"/>
     </root>
 
-</configuration>
+</configuration>
\ No newline at end of file
diff --git a/broker/BUILD.bazel b/broker/BUILD.bazel
index ea8dd90..75addf8 100644
--- a/broker/BUILD.bazel
+++ b/broker/BUILD.bazel
@@ -25,7 +25,6 @@
         "//client",
         "//common",
         "//filter",
-        "//logging",
         "//remoting",
         "//srvutil",
         "//store",
@@ -50,6 +49,7 @@
         "@maven//:org_apache_commons_commons_lang3",
         "@maven//:org_lz4_lz4_java",
         "@maven//:org_slf4j_slf4j_api",
+        "@maven//:io_github_aliyun_mq_rocketmq_slf4j_api",
     ],
 )
 
@@ -60,7 +60,7 @@
         "src/test/resources/META-INF/service/org.apache.rocketmq.acl.AccessValidator",
         "src/test/resources/META-INF/service/org.apache.rocketmq.broker.transaction.AbstractTransactionalMessageCheckListener",
         "src/test/resources/META-INF/service/org.apache.rocketmq.broker.transaction.TransactionalMessageService",
-        "src/test/resources/logback-test.xml",
+        "src/test/resources/rmq.logback-test.xml",
     ],
     visibility = ["//visibility:public"],
     deps = [
@@ -70,13 +70,13 @@
         "//client",
         "//common",
         "//filter",
-        "//logging",
         "//remoting",
         "//store",
         "@maven//:com_alibaba_fastjson",
         "@maven//:com_google_guava_guava",
         "@maven//:io_netty_netty_all",
         "@maven//:org_apache_commons_commons_lang3",
+        "@maven//:io_github_aliyun_mq_rocketmq_slf4j_api",
     ],
 )
 
diff --git a/broker/pom.xml b/broker/pom.xml
index 45c8acf..ae79c64 100644
--- a/broker/pom.xml
+++ b/broker/pom.xml
@@ -29,40 +29,46 @@
         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>rocketmq-remoting</artifactId>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>rocketmq-store</artifactId>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>rocketmq-remoting</artifactId>
+            <groupId>io.github.aliyun-mq</groupId>
+            <artifactId>rocketmq-slf4j-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.github.aliyun-mq</groupId>
+            <artifactId>rocketmq-logback-classic</artifactId>
         </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>rocketmq-client</artifactId>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>rocketmq-srvutil</artifactId>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>rocketmq-filter</artifactId>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>rocketmq-acl</artifactId>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>commons-io</groupId>
             <artifactId>commons-io</artifactId>
         </dependency>
         <dependency>
-            <groupId>ch.qos.logback</groupId>
-            <artifactId>logback-classic</artifactId>
-        </dependency>
-        <dependency>
             <groupId>com.alibaba</groupId>
             <artifactId>fastjson</artifactId>
         </dependency>
@@ -71,10 +77,6 @@
             <artifactId>javassist</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-api</artifactId>
-        </dependency>
-        <dependency>
             <groupId>org.bouncycastle</groupId>
             <artifactId>bcpkix-jdk15on</artifactId>
         </dependency>
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/BrokerController.java b/broker/src/main/java/org/apache/rocketmq/broker/BrokerController.java
index 472b919..3f5176e 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/BrokerController.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/BrokerController.java
@@ -116,8 +116,8 @@
 import org.apache.rocketmq.common.message.MessageExtBrokerInner;
 import org.apache.rocketmq.common.stats.MomentStatsItem;
 import org.apache.rocketmq.common.utils.ServiceProvider;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.Configuration;
 import org.apache.rocketmq.remoting.RPCHook;
 import org.apache.rocketmq.remoting.RemotingServer;
@@ -159,9 +159,9 @@
 import org.apache.rocketmq.store.timer.TimerMetrics;
 
 public class BrokerController {
-    protected static final InternalLogger LOG = InternalLoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
-    private static final InternalLogger LOG_PROTECTION = InternalLoggerFactory.getLogger(LoggerName.PROTECTION_LOGGER_NAME);
-    private static final InternalLogger LOG_WATER_MARK = InternalLoggerFactory.getLogger(LoggerName.WATER_MARK_LOGGER_NAME);
+    protected static final Logger LOG = LoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
+    private static final Logger LOG_PROTECTION = LoggerFactory.getLogger(LoggerName.PROTECTION_LOGGER_NAME);
+    private static final Logger LOG_WATER_MARK = LoggerFactory.getLogger(LoggerName.WATER_MARK_LOGGER_NAME);
     protected static final int HA_ADDRESS_MIN_LENGTH = 6;
 
     protected final BrokerConfig brokerConfig;
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/BrokerPreOnlineService.java b/broker/src/main/java/org/apache/rocketmq/broker/BrokerPreOnlineService.java
index 3941169..9916be6 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/BrokerPreOnlineService.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/BrokerPreOnlineService.java
@@ -29,8 +29,8 @@
 import org.apache.rocketmq.common.MixAll;
 import org.apache.rocketmq.common.ServiceThread;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.common.RemotingHelper;
 import org.apache.rocketmq.remoting.protocol.BrokerSyncInfo;
 import org.apache.rocketmq.remoting.protocol.body.BrokerMemberGroup;
@@ -41,7 +41,7 @@
 import org.apache.rocketmq.store.timer.TimerCheckpoint;
 
 public class BrokerPreOnlineService extends ServiceThread {
-    private static final InternalLogger LOGGER = InternalLoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
+    private static final Logger LOGGER = LoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
     private final BrokerController brokerController;
 
     private int waitBrokerIndex = 0;
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/BrokerStartup.java b/broker/src/main/java/org/apache/rocketmq/broker/BrokerStartup.java
index 46cbbf1..f78a5a7 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/BrokerStartup.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/BrokerStartup.java
@@ -16,8 +16,6 @@
  */
 package org.apache.rocketmq.broker;
 
-import ch.qos.logback.classic.LoggerContext;
-import ch.qos.logback.classic.joran.JoranConfigurator;
 import java.io.BufferedInputStream;
 import java.io.FileInputStream;
 import java.io.InputStream;
@@ -32,22 +30,20 @@
 import org.apache.rocketmq.common.MixAll;
 import org.apache.rocketmq.common.constant.LoggerName;
 import org.apache.rocketmq.common.utils.NetworkUtil;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.netty.NettyClientConfig;
 import org.apache.rocketmq.remoting.netty.NettyServerConfig;
 import org.apache.rocketmq.remoting.protocol.RemotingCommand;
 import org.apache.rocketmq.srvutil.ServerUtil;
 import org.apache.rocketmq.store.config.BrokerRole;
 import org.apache.rocketmq.store.config.MessageStoreConfig;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class BrokerStartup {
     public static Properties properties = null;
     public static CommandLine commandLine = null;
     public static String configFile = null;
-    public static InternalLogger log;
+    public static Logger log;
     public static final SystemConfigFileHelper CONFIG_FILE_HELPER = new SystemConfigFileHelper();
 
     public static void main(String[] args) {
@@ -169,10 +165,6 @@
             }
 
             messageStoreConfig.setHaListenPort(nettyServerConfig.getListenPort() + 1);
-            LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
-            JoranConfigurator configurator = new JoranConfigurator();
-            configurator.setContext(lc);
-            lc.reset();
             System.setProperty("brokerLogDir", "");
             if (brokerConfig.isIsolateLogEnable()) {
                 System.setProperty("brokerLogDir", brokerConfig.getBrokerName() + "_" + brokerConfig.getBrokerId());
@@ -180,17 +172,16 @@
             if (brokerConfig.isIsolateLogEnable() && messageStoreConfig.isEnableDLegerCommitLog()) {
                 System.setProperty("brokerLogDir", brokerConfig.getBrokerName() + "_" + messageStoreConfig.getdLegerSelfId());
             }
-            configurator.doConfigure(brokerConfig.getRocketmqHome() + "/conf/logback_broker.xml");
 
             if (commandLine.hasOption('p')) {
-                InternalLogger console = InternalLoggerFactory.getLogger(LoggerName.BROKER_CONSOLE_NAME);
+                Logger console = LoggerFactory.getLogger(LoggerName.BROKER_CONSOLE_NAME);
                 MixAll.printObjectProperties(console, brokerConfig);
                 MixAll.printObjectProperties(console, nettyServerConfig);
                 MixAll.printObjectProperties(console, nettyClientConfig);
                 MixAll.printObjectProperties(console, messageStoreConfig);
                 System.exit(0);
             } else if (commandLine.hasOption('m')) {
-                InternalLogger console = InternalLoggerFactory.getLogger(LoggerName.BROKER_CONSOLE_NAME);
+                Logger console = LoggerFactory.getLogger(LoggerName.BROKER_CONSOLE_NAME);
                 MixAll.printObjectProperties(console, brokerConfig, true);
                 MixAll.printObjectProperties(console, nettyServerConfig, true);
                 MixAll.printObjectProperties(console, nettyClientConfig, true);
@@ -198,7 +189,7 @@
                 System.exit(0);
             }
 
-            log = InternalLoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
+            log = LoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
             MixAll.printObjectProperties(log, brokerConfig);
             MixAll.printObjectProperties(log, nettyServerConfig);
             MixAll.printObjectProperties(log, nettyClientConfig);
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/client/ClientHousekeepingService.java b/broker/src/main/java/org/apache/rocketmq/broker/client/ClientHousekeepingService.java
index 28f2e92..98cf6ea 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/client/ClientHousekeepingService.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/client/ClientHousekeepingService.java
@@ -23,12 +23,12 @@
 import org.apache.rocketmq.broker.BrokerController;
 import org.apache.rocketmq.common.ThreadFactoryImpl;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.ChannelEventListener;
 
 public class ClientHousekeepingService implements ChannelEventListener {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
     private final BrokerController brokerController;
 
     private ScheduledExecutorService scheduledExecutorService;
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/client/ConsumerGroupInfo.java b/broker/src/main/java/org/apache/rocketmq/broker/client/ConsumerGroupInfo.java
index c320d78..c31d952 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/client/ConsumerGroupInfo.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/client/ConsumerGroupInfo.java
@@ -26,14 +26,14 @@
 import java.util.concurrent.ConcurrentMap;
 import org.apache.rocketmq.common.constant.LoggerName;
 import org.apache.rocketmq.common.consumer.ConsumeFromWhere;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.protocol.heartbeat.ConsumeType;
 import org.apache.rocketmq.remoting.protocol.heartbeat.MessageModel;
 import org.apache.rocketmq.remoting.protocol.heartbeat.SubscriptionData;
 
 public class ConsumerGroupInfo {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
     private final String groupName;
     private final ConcurrentMap<String/* Topic */, SubscriptionData> subscriptionTable =
         new ConcurrentHashMap<>();
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/client/ConsumerManager.java b/broker/src/main/java/org/apache/rocketmq/broker/client/ConsumerManager.java
index bf36078..5412fe7 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/client/ConsumerManager.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/client/ConsumerManager.java
@@ -28,8 +28,8 @@
 import java.util.stream.Collectors;
 import org.apache.rocketmq.common.constant.LoggerName;
 import org.apache.rocketmq.common.consumer.ConsumeFromWhere;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.common.RemotingHelper;
 import org.apache.rocketmq.remoting.protocol.heartbeat.ConsumeType;
 import org.apache.rocketmq.remoting.protocol.heartbeat.MessageModel;
@@ -37,7 +37,7 @@
 import org.apache.rocketmq.store.stats.BrokerStatsManager;
 
 public class ConsumerManager {
-    private static final InternalLogger LOGGER = InternalLoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
+    private static final Logger LOGGER = LoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
     private static final long CHANNEL_EXPIRED_TIMEOUT = 1000 * 120;
     private final ConcurrentMap<String, ConsumerGroupInfo> consumerTable =
         new ConcurrentHashMap<>(1024);
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/client/DefaultConsumerIdsChangeListener.java b/broker/src/main/java/org/apache/rocketmq/broker/client/DefaultConsumerIdsChangeListener.java
index 40df2dc..344ad40 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/client/DefaultConsumerIdsChangeListener.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/client/DefaultConsumerIdsChangeListener.java
@@ -28,12 +28,12 @@
 import org.apache.rocketmq.common.AbstractBrokerRunnable;
 import org.apache.rocketmq.common.constant.LoggerName;
 import org.apache.rocketmq.common.utils.ThreadUtils;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.protocol.heartbeat.SubscriptionData;
 
 public class DefaultConsumerIdsChangeListener implements ConsumerIdsChangeListener {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
     private final BrokerController brokerController;
     private final int cacheSize = 8096;
 
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/client/ProducerManager.java b/broker/src/main/java/org/apache/rocketmq/broker/client/ProducerManager.java
index d8a36e8..3f12c29 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/client/ProducerManager.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/client/ProducerManager.java
@@ -28,15 +28,15 @@
 import java.util.concurrent.CopyOnWriteArrayList;
 import org.apache.rocketmq.broker.util.PositiveAtomicCounter;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.common.RemotingHelper;
 import org.apache.rocketmq.remoting.protocol.body.ProducerInfo;
 import org.apache.rocketmq.remoting.protocol.body.ProducerTableInfo;
 import org.apache.rocketmq.store.stats.BrokerStatsManager;
 
 public class ProducerManager {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
     private static final long CHANNEL_EXPIRED_TIMEOUT = 1000 * 120;
     private static final int GET_AVAILABLE_CHANNEL_RETRY_COUNT = 3;
     private final ConcurrentHashMap<String /* group name */, ConcurrentHashMap<Channel, ClientChannelInfo>> groupChannelTable =
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/client/net/Broker2Client.java b/broker/src/main/java/org/apache/rocketmq/broker/client/net/Broker2Client.java
index 8668761..6e1f063 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/client/net/Broker2Client.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/client/net/Broker2Client.java
@@ -34,8 +34,8 @@
 import org.apache.rocketmq.common.message.MessageExt;
 import org.apache.rocketmq.common.message.MessageQueue;
 import org.apache.rocketmq.common.message.MessageQueueForC;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.common.RemotingHelper;
 import org.apache.rocketmq.remoting.exception.RemotingSendRequestException;
 import org.apache.rocketmq.remoting.exception.RemotingTimeoutException;
@@ -51,7 +51,7 @@
 import org.apache.rocketmq.remoting.protocol.header.ResetOffsetRequestHeader;
 
 public class Broker2Client {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
     private final BrokerController brokerController;
 
     public Broker2Client(BrokerController brokerController) {
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/client/rebalance/RebalanceLockManager.java b/broker/src/main/java/org/apache/rocketmq/broker/client/rebalance/RebalanceLockManager.java
index b4942e8..31fa53c 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/client/rebalance/RebalanceLockManager.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/client/rebalance/RebalanceLockManager.java
@@ -18,8 +18,8 @@
 
 import org.apache.rocketmq.common.constant.LoggerName;
 import org.apache.rocketmq.common.message.MessageQueue;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 import java.util.HashSet;
 import java.util.Set;
@@ -29,7 +29,7 @@
 import java.util.concurrent.locks.ReentrantLock;
 
 public class RebalanceLockManager {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.REBALANCE_LOCK_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.REBALANCE_LOCK_LOGGER_NAME);
     private final static long REBALANCE_LOCK_MAX_LIVE_TIME = Long.parseLong(System.getProperty(
         "rocketmq.broker.rebalance.lockMaxLiveTime", "60000"));
     private final Lock lock = new ReentrantLock();
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/controller/ReplicasManager.java b/broker/src/main/java/org/apache/rocketmq/broker/controller/ReplicasManager.java
index 4bfb9fd..6754a50 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/controller/ReplicasManager.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/controller/ReplicasManager.java
@@ -36,8 +36,8 @@
 import org.apache.rocketmq.common.Pair;
 import org.apache.rocketmq.common.ThreadFactoryImpl;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.protocol.EpochEntry;
 import org.apache.rocketmq.remoting.protocol.body.SyncStateSet;
 import org.apache.rocketmq.remoting.protocol.header.namesrv.controller.GetMetaDataResponseHeader;
@@ -55,7 +55,7 @@
  * syncStateSet, only master will start this timed task.
  */
 public class ReplicasManager {
-    private static final InternalLogger LOGGER = InternalLoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
+    private static final Logger LOGGER = LoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
 
     private static final int RETRY_INTERVAL_SECOND = 5;
 
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/dledger/DLedgerRoleChangeHandler.java b/broker/src/main/java/org/apache/rocketmq/broker/dledger/DLedgerRoleChangeHandler.java
index 5bfe496..bafdf8e 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/dledger/DLedgerRoleChangeHandler.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/dledger/DLedgerRoleChangeHandler.java
@@ -27,15 +27,15 @@
 import org.apache.rocketmq.broker.BrokerController;
 import org.apache.rocketmq.common.ThreadFactoryImpl;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.store.DefaultMessageStore;
 import org.apache.rocketmq.store.config.BrokerRole;
 import org.apache.rocketmq.store.dledger.DLedgerCommitLog;
 
 public class DLedgerRoleChangeHandler implements DLedgerLeaderElector.RoleChangeHandler {
 
-    private static final InternalLogger LOGGER = InternalLoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
+    private static final Logger LOGGER = LoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
     private ExecutorService executorService;
     private BrokerController brokerController;
     private DefaultMessageStore messageStore;
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/failover/EscapeBridge.java b/broker/src/main/java/org/apache/rocketmq/broker/failover/EscapeBridge.java
index 913c7a3..ff5e4d9 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/failover/EscapeBridge.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/failover/EscapeBridge.java
@@ -44,8 +44,8 @@
 import org.apache.rocketmq.common.message.MessageExt;
 import org.apache.rocketmq.common.message.MessageExtBrokerInner;
 import org.apache.rocketmq.common.message.MessageQueue;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.exception.RemotingException;
 import org.apache.rocketmq.store.GetMessageResult;
 import org.apache.rocketmq.store.MessageStore;
@@ -53,7 +53,7 @@
 import org.apache.rocketmq.store.PutMessageStatus;
 
 public class EscapeBridge {
-    protected static final InternalLogger LOG = InternalLoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
+    protected static final Logger LOG = LoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
     private static final long SEND_TIMEOUT = 3000L;
     private static final long DEFAULT_PULL_TIMEOUT_MILLIS = 1000 * 10L;
     private final String innerProducerGroupName;
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/filter/CommitLogDispatcherCalcBitMap.java b/broker/src/main/java/org/apache/rocketmq/broker/filter/CommitLogDispatcherCalcBitMap.java
index d82c53f..6df9b01 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/filter/CommitLogDispatcherCalcBitMap.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/filter/CommitLogDispatcherCalcBitMap.java
@@ -20,8 +20,8 @@
 import org.apache.rocketmq.common.BrokerConfig;
 import org.apache.rocketmq.common.UtilAll;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.filter.util.BitsArray;
 import org.apache.rocketmq.store.CommitLogDispatcher;
 import org.apache.rocketmq.store.DispatchRequest;
@@ -34,7 +34,7 @@
  */
 public class CommitLogDispatcherCalcBitMap implements CommitLogDispatcher {
 
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.FILTER_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.FILTER_LOGGER_NAME);
 
     protected final BrokerConfig brokerConfig;
     protected final ConsumerFilterManager consumerFilterManager;
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/filter/ConsumerFilterManager.java b/broker/src/main/java/org/apache/rocketmq/broker/filter/ConsumerFilterManager.java
index 533cd52..84d9558 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/filter/ConsumerFilterManager.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/filter/ConsumerFilterManager.java
@@ -32,8 +32,8 @@
 import org.apache.rocketmq.filter.FilterFactory;
 import org.apache.rocketmq.filter.util.BloomFilter;
 import org.apache.rocketmq.filter.util.BloomFilterData;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.protocol.RemotingSerializable;
 import org.apache.rocketmq.remoting.protocol.heartbeat.SubscriptionData;
 
@@ -42,7 +42,7 @@
  */
 public class ConsumerFilterManager extends ConfigManager {
 
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.FILTER_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.FILTER_LOGGER_NAME);
 
     private static final long MS_24_HOUR = 24 * 3600 * 1000;
 
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/filter/ExpressionMessageFilter.java b/broker/src/main/java/org/apache/rocketmq/broker/filter/ExpressionMessageFilter.java
index 1e900f3..9fe887e 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/filter/ExpressionMessageFilter.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/filter/ExpressionMessageFilter.java
@@ -24,15 +24,15 @@
 import org.apache.rocketmq.common.message.MessageDecoder;
 import org.apache.rocketmq.filter.util.BitsArray;
 import org.apache.rocketmq.filter.util.BloomFilter;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.protocol.heartbeat.SubscriptionData;
 import org.apache.rocketmq.store.ConsumeQueueExt;
 import org.apache.rocketmq.store.MessageFilter;
 
 public class ExpressionMessageFilter implements MessageFilter {
 
-    protected static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.FILTER_LOGGER_NAME);
+    protected static final Logger log = LoggerFactory.getLogger(LoggerName.FILTER_LOGGER_NAME);
 
     protected final SubscriptionData subscriptionData;
     protected final ConsumerFilterData consumerFilterData;
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/filtersrv/FilterServerManager.java b/broker/src/main/java/org/apache/rocketmq/broker/filtersrv/FilterServerManager.java
index af06e2a..6f3ff34 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/filtersrv/FilterServerManager.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/filtersrv/FilterServerManager.java
@@ -33,14 +33,14 @@
 import org.apache.rocketmq.common.ThreadFactoryImpl;
 import org.apache.rocketmq.common.constant.LoggerName;
 import org.apache.rocketmq.common.utils.NetworkUtil;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.common.RemotingHelper;
 
 public class FilterServerManager {
 
     public static final long FILTER_SERVER_MAX_IDLE_TIME_MILLS = 30000;
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
     private final ConcurrentMap<Channel, FilterServerInfo> filterServerTable =
         new ConcurrentHashMap<>(16);
     private final BrokerController brokerController;
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/filtersrv/FilterServerUtil.java b/broker/src/main/java/org/apache/rocketmq/broker/filtersrv/FilterServerUtil.java
index 3f4d24d..84cc7f6 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/filtersrv/FilterServerUtil.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/filtersrv/FilterServerUtil.java
@@ -18,10 +18,10 @@
 package org.apache.rocketmq.broker.filtersrv;
 
 
-import org.apache.rocketmq.logging.InternalLogger;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
 
 public class FilterServerUtil {
-    public static void callShell(final String shellString, final InternalLogger log) {
+    public static void callShell(final String shellString, final Logger log) {
         Process process = null;
         try {
             String[] cmdArray = splitShellString(shellString);
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/latency/BrokerFastFailure.java b/broker/src/main/java/org/apache/rocketmq/broker/latency/BrokerFastFailure.java
index 6269a55..7df67d8 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/latency/BrokerFastFailure.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/latency/BrokerFastFailure.java
@@ -25,8 +25,8 @@
 import org.apache.rocketmq.common.ThreadFactoryImpl;
 import org.apache.rocketmq.common.UtilAll;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.netty.RequestTask;
 import org.apache.rocketmq.remoting.protocol.RemotingSysResponseCode;
 
@@ -35,7 +35,7 @@
  * BrokerController#getPullThreadPoolQueue()}
  */
 public class BrokerFastFailure {
-    private static final InternalLogger LOGGER = InternalLoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
+    private static final Logger LOGGER = LoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
     private final ScheduledExecutorService scheduledExecutorService;
     private final BrokerController brokerController;
 
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/longpolling/LmqPullRequestHoldService.java b/broker/src/main/java/org/apache/rocketmq/broker/longpolling/LmqPullRequestHoldService.java
index b3eeea2..075f321 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/longpolling/LmqPullRequestHoldService.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/longpolling/LmqPullRequestHoldService.java
@@ -19,12 +19,12 @@
 import org.apache.rocketmq.broker.BrokerController;
 import org.apache.rocketmq.common.MixAll;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 
 public class LmqPullRequestHoldService extends PullRequestHoldService {
-    private static final InternalLogger LOGGER = InternalLoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
+    private static final Logger LOGGER = LoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
 
     public LmqPullRequestHoldService(BrokerController brokerController) {
         super(brokerController);
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/longpolling/PullRequestHoldService.java b/broker/src/main/java/org/apache/rocketmq/broker/longpolling/PullRequestHoldService.java
index 59b8843..c267776 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/longpolling/PullRequestHoldService.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/longpolling/PullRequestHoldService.java
@@ -25,12 +25,12 @@
 import org.apache.rocketmq.common.ServiceThread;
 import org.apache.rocketmq.common.SystemClock;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.store.ConsumeQueueExt;
 
 public class PullRequestHoldService extends ServiceThread {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
     protected static final String TOPIC_QUEUEID_SEPARATOR = "@";
     protected final BrokerController brokerController;
     private final SystemClock systemClock = new SystemClock();
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/metrics/BrokerMetricsManager.java b/broker/src/main/java/org/apache/rocketmq/broker/metrics/BrokerMetricsManager.java
index 4dd0eba..adb3a84 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/metrics/BrokerMetricsManager.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/metrics/BrokerMetricsManager.java
@@ -56,8 +56,8 @@
 import org.apache.rocketmq.common.metrics.NopLongHistogram;
 import org.apache.rocketmq.common.metrics.NopObservableLongGauge;
 import org.apache.rocketmq.common.topic.TopicValidator;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.metrics.RemotingMetricsManager;
 import org.apache.rocketmq.remoting.protocol.header.SendMessageRequestHeader;
 import org.apache.rocketmq.store.DefaultMessageStore;
@@ -97,7 +97,7 @@
 import static org.apache.rocketmq.remoting.metrics.RemotingMetricsConstant.PROTOCOL_TYPE_REMOTING;
 
 public class BrokerMetricsManager {
-    private static final InternalLogger LOGGER = InternalLoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
+    private static final Logger LOGGER = LoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
 
     private final BrokerConfig brokerConfig;
     private final MessageStore messageStore;
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/metrics/ConsumerLagCalculator.java b/broker/src/main/java/org/apache/rocketmq/broker/metrics/ConsumerLagCalculator.java
index 5a6cdda..51af5f3 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/metrics/ConsumerLagCalculator.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/metrics/ConsumerLagCalculator.java
@@ -33,8 +33,8 @@
 import org.apache.rocketmq.common.TopicConfig;
 import org.apache.rocketmq.common.constant.LoggerName;
 import org.apache.rocketmq.common.constant.PermName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.protocol.subscription.SubscriptionGroupConfig;
 import org.apache.rocketmq.store.MessageStore;
 import org.apache.rocketmq.store.queue.ConsumeQueueInterface;
@@ -49,7 +49,7 @@
     private final MessageStore messageStore;
     private final PopBufferMergeService popBufferMergeService;
 
-    private static final InternalLogger LOGGER = InternalLoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
+    private static final Logger LOGGER = LoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
 
     public ConsumerLagCalculator(BrokerController brokerController) {
         this.brokerConfig = brokerController.getBrokerConfig();
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/offset/ConsumerOffsetManager.java b/broker/src/main/java/org/apache/rocketmq/broker/offset/ConsumerOffsetManager.java
index 06fdde8..70f8625 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/offset/ConsumerOffsetManager.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/offset/ConsumerOffsetManager.java
@@ -31,13 +31,13 @@
 import org.apache.rocketmq.common.ConfigManager;
 import org.apache.rocketmq.common.UtilAll;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.protocol.DataVersion;
 import org.apache.rocketmq.remoting.protocol.RemotingSerializable;
 
 public class ConsumerOffsetManager extends ConfigManager {
-    private static final InternalLogger LOG = InternalLoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
+    private static final Logger LOG = LoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
     public static final String TOPIC_GROUP_SEPARATOR = "@";
 
     private DataVersion dataVersion = new DataVersion();
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/offset/ConsumerOrderInfoLockManager.java b/broker/src/main/java/org/apache/rocketmq/broker/offset/ConsumerOrderInfoLockManager.java
index 3cd8dcd..194c361 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/offset/ConsumerOrderInfoLockManager.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/offset/ConsumerOrderInfoLockManager.java
@@ -29,11 +29,11 @@
 import org.apache.rocketmq.broker.BrokerController;
 import org.apache.rocketmq.common.ThreadFactoryImpl;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 public class ConsumerOrderInfoLockManager {
-    private static final InternalLogger POP_LOGGER = InternalLoggerFactory.getLogger(LoggerName.ROCKETMQ_POP_LOGGER_NAME);
+    private static final Logger POP_LOGGER = LoggerFactory.getLogger(LoggerName.ROCKETMQ_POP_LOGGER_NAME);
     private final BrokerController brokerController;
     private final Map<Key, Timeout> timeoutMap = new ConcurrentHashMap<>();
     private final Timer timer;
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/offset/ConsumerOrderInfoManager.java b/broker/src/main/java/org/apache/rocketmq/broker/offset/ConsumerOrderInfoManager.java
index f809492..3a496b9 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/offset/ConsumerOrderInfoManager.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/offset/ConsumerOrderInfoManager.java
@@ -32,14 +32,14 @@
 import org.apache.rocketmq.common.ConfigManager;
 import org.apache.rocketmq.common.TopicConfig;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.protocol.RemotingSerializable;
 import org.apache.rocketmq.remoting.protocol.header.ExtraInfoUtil;
 
 public class ConsumerOrderInfoManager extends ConfigManager {
 
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
     private static final String TOPIC_GROUP_SEPARATOR = "@";
     private static final long CLEAN_SPAN_FROM_LAST = 24 * 3600 * 1000;
 
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/out/BrokerOuterAPI.java b/broker/src/main/java/org/apache/rocketmq/broker/out/BrokerOuterAPI.java
index 96def3f..80f670f 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/out/BrokerOuterAPI.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/out/BrokerOuterAPI.java
@@ -58,8 +58,8 @@
 import org.apache.rocketmq.common.namesrv.TopAddressing;
 import org.apache.rocketmq.common.sysflag.PullSysFlag;
 import org.apache.rocketmq.common.topic.TopicValidator;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.InvokeCallback;
 import org.apache.rocketmq.remoting.RPCHook;
 import org.apache.rocketmq.remoting.RemotingClient;
@@ -132,7 +132,7 @@
 import static org.apache.rocketmq.remoting.protocol.ResponseCode.CONTROLLER_NOT_LEADER;
 
 public class BrokerOuterAPI {
-    private static final InternalLogger LOGGER = InternalLoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
+    private static final Logger LOGGER = LoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
     private final RemotingClient remotingClient;
     private final TopAddressing topAddressing = new DefaultTopAddressing(MixAll.getWSAddr());
     private String nameSrvAddr = null;
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/processor/AbstractSendMessageProcessor.java b/broker/src/main/java/org/apache/rocketmq/broker/processor/AbstractSendMessageProcessor.java
index 84d9ab7..aa075e6 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/processor/AbstractSendMessageProcessor.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/processor/AbstractSendMessageProcessor.java
@@ -47,8 +47,8 @@
 import org.apache.rocketmq.common.sysflag.MessageSysFlag;
 import org.apache.rocketmq.common.sysflag.TopicSysFlag;
 import org.apache.rocketmq.common.topic.TopicValidator;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.common.RemotingHelper;
 import org.apache.rocketmq.remoting.exception.RemotingCommandException;
 import org.apache.rocketmq.remoting.netty.NettyRemotingAbstract;
@@ -64,8 +64,8 @@
 import org.apache.rocketmq.store.stats.BrokerStatsManager;
 
 public abstract class AbstractSendMessageProcessor implements NettyRequestProcessor {
-    protected static final InternalLogger LOGGER = InternalLoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
-    protected static final InternalLogger DLQ_LOG = InternalLoggerFactory.getLogger(LoggerName.DLQ_LOGGER_NAME);
+    protected static final Logger LOGGER = LoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
+    protected static final Logger DLQ_LOG = LoggerFactory.getLogger(LoggerName.DLQ_LOGGER_NAME);
 
     protected List<ConsumeMessageHook> consumeMessageHookList;
 
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/processor/AckMessageProcessor.java b/broker/src/main/java/org/apache/rocketmq/broker/processor/AckMessageProcessor.java
index 6c5ec93..586c461 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/processor/AckMessageProcessor.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/processor/AckMessageProcessor.java
@@ -29,8 +29,8 @@
 import org.apache.rocketmq.common.message.MessageDecoder;
 import org.apache.rocketmq.common.message.MessageExtBrokerInner;
 import org.apache.rocketmq.common.utils.DataConverter;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.common.RemotingHelper;
 import org.apache.rocketmq.remoting.exception.RemotingCommandException;
 import org.apache.rocketmq.remoting.netty.NettyRequestProcessor;
@@ -43,7 +43,7 @@
 import org.apache.rocketmq.store.pop.AckMsg;
 
 public class AckMessageProcessor implements NettyRequestProcessor {
-    private static final InternalLogger POP_LOGGER = InternalLoggerFactory.getLogger(LoggerName.ROCKETMQ_POP_LOGGER_NAME);
+    private static final Logger POP_LOGGER = LoggerFactory.getLogger(LoggerName.ROCKETMQ_POP_LOGGER_NAME);
     private final BrokerController brokerController;
     private String reviveTopic;
     private PopReviveService[] popReviveServices;
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/processor/AdminBrokerProcessor.java b/broker/src/main/java/org/apache/rocketmq/broker/processor/AdminBrokerProcessor.java
index 60cc9c7..7415075 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/processor/AdminBrokerProcessor.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/processor/AdminBrokerProcessor.java
@@ -72,8 +72,8 @@
 import org.apache.rocketmq.common.stats.StatsSnapshot;
 import org.apache.rocketmq.common.topic.TopicValidator;
 import org.apache.rocketmq.filter.util.BitsArray;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.common.RemotingHelper;
 import org.apache.rocketmq.remoting.exception.RemotingCommandException;
 import org.apache.rocketmq.remoting.exception.RemotingTimeoutException;
@@ -189,7 +189,7 @@
 import static org.apache.rocketmq.remoting.protocol.RemotingCommand.buildErrorResponse;
 
 public class AdminBrokerProcessor implements NettyRequestProcessor {
-    private static final InternalLogger LOGGER = InternalLoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
+    private static final Logger LOGGER = LoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
     protected final BrokerController brokerController;
 
     public AdminBrokerProcessor(final BrokerController brokerController) {
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/processor/ChangeInvisibleTimeProcessor.java b/broker/src/main/java/org/apache/rocketmq/broker/processor/ChangeInvisibleTimeProcessor.java
index 6f4853f..7494bdd 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/processor/ChangeInvisibleTimeProcessor.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/processor/ChangeInvisibleTimeProcessor.java
@@ -28,8 +28,8 @@
 import org.apache.rocketmq.common.message.MessageDecoder;
 import org.apache.rocketmq.common.message.MessageExtBrokerInner;
 import org.apache.rocketmq.common.utils.DataConverter;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.common.RemotingHelper;
 import org.apache.rocketmq.remoting.exception.RemotingCommandException;
 import org.apache.rocketmq.remoting.netty.NettyRequestProcessor;
@@ -44,7 +44,7 @@
 import org.apache.rocketmq.store.pop.PopCheckPoint;
 
 public class ChangeInvisibleTimeProcessor implements NettyRequestProcessor {
-    private static final InternalLogger POP_LOGGER = InternalLoggerFactory.getLogger(LoggerName.ROCKETMQ_POP_LOGGER_NAME);
+    private static final Logger POP_LOGGER = LoggerFactory.getLogger(LoggerName.ROCKETMQ_POP_LOGGER_NAME);
     private final BrokerController brokerController;
     private final String reviveTopic;
 
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/processor/ClientManageProcessor.java b/broker/src/main/java/org/apache/rocketmq/broker/processor/ClientManageProcessor.java
index 468ab86..07807a2 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/processor/ClientManageProcessor.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/processor/ClientManageProcessor.java
@@ -25,8 +25,8 @@
 import org.apache.rocketmq.common.filter.ExpressionType;
 import org.apache.rocketmq.common.sysflag.TopicSysFlag;
 import org.apache.rocketmq.filter.FilterFactory;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.common.RemotingHelper;
 import org.apache.rocketmq.remoting.exception.RemotingCommandException;
 import org.apache.rocketmq.remoting.netty.NettyRequestProcessor;
@@ -44,7 +44,7 @@
 import org.apache.rocketmq.remoting.protocol.subscription.SubscriptionGroupConfig;
 
 public class ClientManageProcessor implements NettyRequestProcessor {
-    private static final InternalLogger LOGGER = InternalLoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
+    private static final Logger LOGGER = LoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
     private final BrokerController brokerController;
 
     public ClientManageProcessor(final BrokerController brokerController) {
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/processor/ConsumerManageProcessor.java b/broker/src/main/java/org/apache/rocketmq/broker/processor/ConsumerManageProcessor.java
index 0363aca..0af0038 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/processor/ConsumerManageProcessor.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/processor/ConsumerManageProcessor.java
@@ -22,8 +22,8 @@
 import org.apache.rocketmq.broker.client.ConsumerGroupInfo;
 import org.apache.rocketmq.broker.offset.ConsumerOffsetManager;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.common.RemotingHelper;
 import org.apache.rocketmq.remoting.exception.RemotingCommandException;
 import org.apache.rocketmq.remoting.netty.NettyRequestProcessor;
@@ -48,7 +48,7 @@
 import static org.apache.rocketmq.remoting.protocol.RemotingCommand.buildErrorResponse;
 
 public class ConsumerManageProcessor implements NettyRequestProcessor {
-    private static final InternalLogger LOGGER = InternalLoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
+    private static final Logger LOGGER = LoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
     private final BrokerController brokerController;
 
     public ConsumerManageProcessor(final BrokerController brokerController) {
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/processor/DefaultPullMessageResultHandler.java b/broker/src/main/java/org/apache/rocketmq/broker/processor/DefaultPullMessageResultHandler.java
index bd59d42..af0c81e 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/processor/DefaultPullMessageResultHandler.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/processor/DefaultPullMessageResultHandler.java
@@ -39,8 +39,8 @@
 import org.apache.rocketmq.common.sysflag.PullSysFlag;
 import org.apache.rocketmq.common.topic.TopicValidator;
 import org.apache.rocketmq.common.utils.NetworkUtil;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.metrics.RemotingMetricsManager;
 import org.apache.rocketmq.remoting.protocol.RemotingCommand;
 import org.apache.rocketmq.remoting.protocol.ResponseCode;
@@ -63,7 +63,7 @@
 
 public class DefaultPullMessageResultHandler implements PullMessageResultHandler {
 
-    protected static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
+    protected static final Logger log = LoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
     protected final BrokerController brokerController;
 
     public DefaultPullMessageResultHandler(final BrokerController brokerController) {
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/processor/EndTransactionProcessor.java b/broker/src/main/java/org/apache/rocketmq/broker/processor/EndTransactionProcessor.java
index dfaa473..9600235 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/processor/EndTransactionProcessor.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/processor/EndTransactionProcessor.java
@@ -27,8 +27,8 @@
 import org.apache.rocketmq.common.message.MessageExt;
 import org.apache.rocketmq.common.message.MessageExtBrokerInner;
 import org.apache.rocketmq.common.sysflag.MessageSysFlag;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.common.RemotingHelper;
 import org.apache.rocketmq.remoting.exception.RemotingCommandException;
 import org.apache.rocketmq.remoting.netty.NettyRequestProcessor;
@@ -42,7 +42,7 @@
  * EndTransaction processor: process commit and rollback message
  */
 public class EndTransactionProcessor implements NettyRequestProcessor {
-    private static final InternalLogger LOGGER = InternalLoggerFactory.getLogger(LoggerName.TRANSACTION_LOGGER_NAME);
+    private static final Logger LOGGER = LoggerFactory.getLogger(LoggerName.TRANSACTION_LOGGER_NAME);
     private final BrokerController brokerController;
 
     public EndTransactionProcessor(final BrokerController brokerController) {
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/processor/ForwardRequestProcessor.java b/broker/src/main/java/org/apache/rocketmq/broker/processor/ForwardRequestProcessor.java
index b0f0a05..7af75d3 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/processor/ForwardRequestProcessor.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/processor/ForwardRequestProcessor.java
@@ -19,13 +19,13 @@
 import io.netty.channel.ChannelHandlerContext;
 import org.apache.rocketmq.broker.BrokerController;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.netty.NettyRequestProcessor;
 import org.apache.rocketmq.remoting.protocol.RemotingCommand;
 
 public class ForwardRequestProcessor implements NettyRequestProcessor {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
 
     private final BrokerController brokerController;
 
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/processor/NotificationProcessor.java b/broker/src/main/java/org/apache/rocketmq/broker/processor/NotificationProcessor.java
index 1db2230..6c9205a 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/processor/NotificationProcessor.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/processor/NotificationProcessor.java
@@ -32,8 +32,8 @@
 import org.apache.rocketmq.common.constant.LoggerName;
 import org.apache.rocketmq.common.constant.PermName;
 import org.apache.rocketmq.common.help.FAQUrl;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.common.RemotingHelper;
 import org.apache.rocketmq.remoting.exception.RemotingCommandException;
 import org.apache.rocketmq.remoting.netty.NettyRemotingAbstract;
@@ -46,7 +46,7 @@
 import org.apache.rocketmq.remoting.protocol.subscription.SubscriptionGroupConfig;
 
 public class NotificationProcessor implements NettyRequestProcessor {
-    private static final InternalLogger POP_LOGGER = InternalLoggerFactory.getLogger(LoggerName.ROCKETMQ_POP_LOGGER_NAME);
+    private static final Logger POP_LOGGER = LoggerFactory.getLogger(LoggerName.ROCKETMQ_POP_LOGGER_NAME);
     private final BrokerController brokerController;
     private Random random = new Random(System.currentTimeMillis());
     private static final String BORN_TIME = "bornTime";
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/processor/PeekMessageProcessor.java b/broker/src/main/java/org/apache/rocketmq/broker/processor/PeekMessageProcessor.java
index 2286382..9bf19d8 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/processor/PeekMessageProcessor.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/processor/PeekMessageProcessor.java
@@ -36,8 +36,8 @@
 import org.apache.rocketmq.common.help.FAQUrl;
 import org.apache.rocketmq.common.message.MessageDecoder;
 import org.apache.rocketmq.common.topic.TopicValidator;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.common.RemotingHelper;
 import org.apache.rocketmq.remoting.exception.RemotingCommandException;
 import org.apache.rocketmq.remoting.metrics.RemotingMetricsManager;
@@ -59,7 +59,7 @@
 import static org.apache.rocketmq.remoting.metrics.RemotingMetricsConstant.LABEL_RESULT;
 
 public class PeekMessageProcessor implements NettyRequestProcessor {
-    private static final InternalLogger LOG = InternalLoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
+    private static final Logger LOG = LoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
     private final BrokerController brokerController;
     private Random random = new Random(System.currentTimeMillis());
 
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/processor/PollingInfoProcessor.java b/broker/src/main/java/org/apache/rocketmq/broker/processor/PollingInfoProcessor.java
index bd3bf62..8d2703d 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/processor/PollingInfoProcessor.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/processor/PollingInfoProcessor.java
@@ -26,8 +26,8 @@
 import org.apache.rocketmq.common.constant.LoggerName;
 import org.apache.rocketmq.common.constant.PermName;
 import org.apache.rocketmq.common.help.FAQUrl;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.common.RemotingHelper;
 import org.apache.rocketmq.remoting.exception.RemotingCommandException;
 import org.apache.rocketmq.remoting.netty.NettyRequestProcessor;
@@ -38,7 +38,7 @@
 import org.apache.rocketmq.remoting.protocol.subscription.SubscriptionGroupConfig;
 
 public class PollingInfoProcessor implements NettyRequestProcessor {
-    private static final InternalLogger POP_LOGGER = InternalLoggerFactory.getLogger(LoggerName.ROCKETMQ_POP_LOGGER_NAME);
+    private static final Logger POP_LOGGER = LoggerFactory.getLogger(LoggerName.ROCKETMQ_POP_LOGGER_NAME);
     private final BrokerController brokerController;
 
     public PollingInfoProcessor(final BrokerController brokerController) {
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/processor/PopBufferMergeService.java b/broker/src/main/java/org/apache/rocketmq/broker/processor/PopBufferMergeService.java
index 3a1d8ba..40ea99b 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/processor/PopBufferMergeService.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/processor/PopBufferMergeService.java
@@ -31,8 +31,8 @@
 import org.apache.rocketmq.common.message.MessageConst;
 import org.apache.rocketmq.common.message.MessageDecoder;
 import org.apache.rocketmq.common.utils.DataConverter;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.common.message.MessageExtBrokerInner;
 import org.apache.rocketmq.store.PutMessageResult;
 import org.apache.rocketmq.store.PutMessageStatus;
@@ -41,7 +41,7 @@
 import org.apache.rocketmq.store.pop.PopCheckPoint;
 
 public class PopBufferMergeService extends ServiceThread {
-    private static final InternalLogger POP_LOGGER = InternalLoggerFactory.getLogger(LoggerName.ROCKETMQ_POP_LOGGER_NAME);
+    private static final Logger POP_LOGGER = LoggerFactory.getLogger(LoggerName.ROCKETMQ_POP_LOGGER_NAME);
     ConcurrentHashMap<String/*mergeKey*/, PopCheckPointWrapper>
         buffer = new ConcurrentHashMap<>(1024 * 16);
     ConcurrentHashMap<String/*topic@cid@queueId*/, QueueWithTime<PopCheckPointWrapper>> commitOffsets =
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/processor/PopMessageProcessor.java b/broker/src/main/java/org/apache/rocketmq/broker/processor/PopMessageProcessor.java
index f0f23e7..7251c61 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/processor/PopMessageProcessor.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/processor/PopMessageProcessor.java
@@ -55,8 +55,8 @@
 import org.apache.rocketmq.common.message.MessageExtBrokerInner;
 import org.apache.rocketmq.common.topic.TopicValidator;
 import org.apache.rocketmq.common.utils.DataConverter;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.common.RemotingHelper;
 import org.apache.rocketmq.remoting.exception.RemotingCommandException;
 import org.apache.rocketmq.remoting.metrics.RemotingMetricsManager;
@@ -85,8 +85,8 @@
 import static org.apache.rocketmq.remoting.metrics.RemotingMetricsConstant.LABEL_RESULT;
 
 public class PopMessageProcessor implements NettyRequestProcessor {
-    private static final InternalLogger POP_LOGGER =
-        InternalLoggerFactory.getLogger(LoggerName.ROCKETMQ_POP_LOGGER_NAME);
+    private static final Logger POP_LOGGER =
+        LoggerFactory.getLogger(LoggerName.ROCKETMQ_POP_LOGGER_NAME);
     private final BrokerController brokerController;
     private Random random = new Random(System.currentTimeMillis());
     String reviveTopic;
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/processor/PopReviveService.java b/broker/src/main/java/org/apache/rocketmq/broker/processor/PopReviveService.java
index 96ea64a..50489e2 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/processor/PopReviveService.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/processor/PopReviveService.java
@@ -42,8 +42,8 @@
 import org.apache.rocketmq.common.message.MessageExt;
 import org.apache.rocketmq.common.topic.TopicValidator;
 import org.apache.rocketmq.common.utils.DataConverter;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.store.AppendMessageStatus;
 import org.apache.rocketmq.store.GetMessageResult;
 import org.apache.rocketmq.common.message.MessageExtBrokerInner;
@@ -56,7 +56,7 @@
 import static org.apache.rocketmq.broker.metrics.BrokerMetricsConstant.LABEL_TOPIC;
 
 public class PopReviveService extends ServiceThread {
-    private static final InternalLogger POP_LOGGER = InternalLoggerFactory.getLogger(LoggerName.ROCKETMQ_POP_LOGGER_NAME);
+    private static final Logger POP_LOGGER = LoggerFactory.getLogger(LoggerName.ROCKETMQ_POP_LOGGER_NAME);
 
     private int queueId;
     private BrokerController brokerController;
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/processor/PullMessageProcessor.java b/broker/src/main/java/org/apache/rocketmq/broker/processor/PullMessageProcessor.java
index 5fa6041..6d595e4 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/processor/PullMessageProcessor.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/processor/PullMessageProcessor.java
@@ -38,8 +38,8 @@
 import org.apache.rocketmq.common.filter.ExpressionType;
 import org.apache.rocketmq.common.help.FAQUrl;
 import org.apache.rocketmq.common.sysflag.PullSysFlag;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.common.RemotingHelper;
 import org.apache.rocketmq.remoting.exception.RemotingCommandException;
 import org.apache.rocketmq.remoting.netty.NettyRemotingAbstract;
@@ -75,7 +75,7 @@
 import static org.apache.rocketmq.remoting.protocol.RemotingCommand.buildErrorResponse;
 
 public class PullMessageProcessor implements NettyRequestProcessor {
-    private static final InternalLogger LOGGER = InternalLoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
+    private static final Logger LOGGER = LoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
     private List<ConsumeMessageHook> consumeMessageHookList;
     private PullMessageResultHandler pullMessageResultHandler;
     private final BrokerController brokerController;
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/processor/QueryAssignmentProcessor.java b/broker/src/main/java/org/apache/rocketmq/broker/processor/QueryAssignmentProcessor.java
index 28c32ad..8ecc3f0 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/processor/QueryAssignmentProcessor.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/processor/QueryAssignmentProcessor.java
@@ -37,8 +37,8 @@
 import org.apache.rocketmq.common.message.MessageQueue;
 import org.apache.rocketmq.common.message.MessageQueueAssignment;
 import org.apache.rocketmq.common.message.MessageRequestMode;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.common.RemotingHelper;
 import org.apache.rocketmq.remoting.exception.RemotingCommandException;
 import org.apache.rocketmq.remoting.netty.NettyRequestProcessor;
@@ -51,7 +51,7 @@
 import org.apache.rocketmq.remoting.protocol.heartbeat.MessageModel;
 
 public class QueryAssignmentProcessor implements NettyRequestProcessor {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
 
     private final BrokerController brokerController;
 
@@ -64,9 +64,9 @@
 
         //register strategy
         //NOTE: init with broker's log instead of init with ClientLogger.getLog();
-        AllocateMessageQueueAveragely allocateMessageQueueAveragely = new AllocateMessageQueueAveragely(log);
+        AllocateMessageQueueAveragely allocateMessageQueueAveragely = new AllocateMessageQueueAveragely();
         name2LoadStrategy.put(allocateMessageQueueAveragely.getName(), allocateMessageQueueAveragely);
-        AllocateMessageQueueAveragelyByCircle allocateMessageQueueAveragelyByCircle = new AllocateMessageQueueAveragelyByCircle(log);
+        AllocateMessageQueueAveragelyByCircle allocateMessageQueueAveragelyByCircle = new AllocateMessageQueueAveragelyByCircle();
         name2LoadStrategy.put(allocateMessageQueueAveragelyByCircle.getName(), allocateMessageQueueAveragelyByCircle);
 
         this.messageRequestModeManager = new MessageRequestModeManager(brokerController);
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/processor/QueryMessageProcessor.java b/broker/src/main/java/org/apache/rocketmq/broker/processor/QueryMessageProcessor.java
index f027a68..1a271cf 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/processor/QueryMessageProcessor.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/processor/QueryMessageProcessor.java
@@ -26,8 +26,8 @@
 import org.apache.rocketmq.broker.pagecache.QueryMessageTransfer;
 import org.apache.rocketmq.common.MixAll;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.exception.RemotingCommandException;
 import org.apache.rocketmq.remoting.metrics.RemotingMetricsManager;
 import org.apache.rocketmq.remoting.netty.NettyRequestProcessor;
@@ -45,7 +45,7 @@
 import static org.apache.rocketmq.remoting.metrics.RemotingMetricsConstant.LABEL_RESULT;
 
 public class QueryMessageProcessor implements NettyRequestProcessor {
-    private static final InternalLogger LOGGER = InternalLoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
+    private static final Logger LOGGER = LoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
     private final BrokerController brokerController;
 
     public QueryMessageProcessor(final BrokerController brokerController) {
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/processor/ReplyMessageProcessor.java b/broker/src/main/java/org/apache/rocketmq/broker/processor/ReplyMessageProcessor.java
index 91d3bb7..d16a9a6 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/processor/ReplyMessageProcessor.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/processor/ReplyMessageProcessor.java
@@ -36,8 +36,8 @@
 import org.apache.rocketmq.common.message.MessageExt;
 import org.apache.rocketmq.common.message.MessageExtBrokerInner;
 import org.apache.rocketmq.common.topic.TopicValidator;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.exception.RemotingCommandException;
 import org.apache.rocketmq.remoting.exception.RemotingException;
 import org.apache.rocketmq.remoting.protocol.RemotingCommand;
@@ -55,7 +55,7 @@
 import static org.apache.rocketmq.broker.metrics.BrokerMetricsConstant.LABEL_TOPIC;
 
 public class ReplyMessageProcessor extends AbstractSendMessageProcessor {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
 
     public ReplyMessageProcessor(final BrokerController brokerController) {
         super(brokerController);
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/schedule/ScheduleMessageService.java b/broker/src/main/java/org/apache/rocketmq/broker/schedule/ScheduleMessageService.java
index 4bf09b8..bb7db9e 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/schedule/ScheduleMessageService.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/schedule/ScheduleMessageService.java
@@ -50,8 +50,8 @@
 import org.apache.rocketmq.common.running.RunningStats;
 import org.apache.rocketmq.common.topic.TopicValidator;
 import org.apache.rocketmq.common.utils.ThreadUtils;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.protocol.DataVersion;
 import org.apache.rocketmq.store.PutMessageResult;
 import org.apache.rocketmq.store.PutMessageStatus;
@@ -66,7 +66,7 @@
 import static org.apache.rocketmq.broker.metrics.BrokerMetricsConstant.LABEL_TOPIC;
 
 public class ScheduleMessageService extends ConfigManager {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
 
     private static final long FIRST_DELAY_TIME = 1000L;
     private static final long DELAY_FOR_A_WHILE = 100L;
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/slave/SlaveSynchronize.java b/broker/src/main/java/org/apache/rocketmq/broker/slave/SlaveSynchronize.java
index 750b174..7a4a17c 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/slave/SlaveSynchronize.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/slave/SlaveSynchronize.java
@@ -23,8 +23,8 @@
 import org.apache.rocketmq.broker.subscription.SubscriptionGroupManager;
 import org.apache.rocketmq.common.MixAll;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.protocol.body.ConsumerOffsetSerializeWrapper;
 import org.apache.rocketmq.remoting.protocol.body.MessageRequestModeSerializeWrapper;
 import org.apache.rocketmq.remoting.protocol.body.SubscriptionGroupWrapper;
@@ -34,7 +34,7 @@
 import org.apache.rocketmq.store.timer.TimerMetrics;
 
 public class SlaveSynchronize {
-    private static final InternalLogger LOGGER = InternalLoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
+    private static final Logger LOGGER = LoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
     private final BrokerController brokerController;
     private volatile String masterAddr = null;
 
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/subscription/SubscriptionGroupManager.java b/broker/src/main/java/org/apache/rocketmq/broker/subscription/SubscriptionGroupManager.java
index 3b153ef..4a09754 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/subscription/SubscriptionGroupManager.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/subscription/SubscriptionGroupManager.java
@@ -26,14 +26,14 @@
 import org.apache.rocketmq.common.ConfigManager;
 import org.apache.rocketmq.common.MixAll;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.protocol.DataVersion;
 import org.apache.rocketmq.remoting.protocol.RemotingSerializable;
 import org.apache.rocketmq.remoting.protocol.subscription.SubscriptionGroupConfig;
 
 public class SubscriptionGroupManager extends ConfigManager {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
 
     private final ConcurrentMap<String, SubscriptionGroupConfig> subscriptionGroupTable =
         new ConcurrentHashMap<>(1024);
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/topic/TopicConfigManager.java b/broker/src/main/java/org/apache/rocketmq/broker/topic/TopicConfigManager.java
index 6eb10f5..90c029b 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/topic/TopicConfigManager.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/topic/TopicConfigManager.java
@@ -42,8 +42,8 @@
 import org.apache.rocketmq.common.constant.PermName;
 import org.apache.rocketmq.common.sysflag.TopicSysFlag;
 import org.apache.rocketmq.common.topic.TopicValidator;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.protocol.DataVersion;
 import org.apache.rocketmq.remoting.protocol.body.KVTable;
 import org.apache.rocketmq.remoting.protocol.body.TopicConfigSerializeWrapper;
@@ -51,7 +51,7 @@
 import static com.google.common.base.Preconditions.checkNotNull;
 
 public class TopicConfigManager extends ConfigManager {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
     private static final long LOCK_TIMEOUT_MILLIS = 3000;
     private static final int SCHEDULE_TOPIC_QUEUE_NUM = 18;
 
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/topic/TopicQueueMappingCleanService.java b/broker/src/main/java/org/apache/rocketmq/broker/topic/TopicQueueMappingCleanService.java
index e08adbc..98e50d4 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/topic/TopicQueueMappingCleanService.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/topic/TopicQueueMappingCleanService.java
@@ -30,8 +30,8 @@
 import org.apache.rocketmq.common.UtilAll;
 import org.apache.rocketmq.common.constant.LoggerName;
 import org.apache.rocketmq.common.message.MessageQueue;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.protocol.RequestCode;
 import org.apache.rocketmq.remoting.protocol.admin.TopicOffset;
 import org.apache.rocketmq.remoting.protocol.admin.TopicStatsTable;
@@ -49,7 +49,7 @@
 import org.apache.rocketmq.store.config.MessageStoreConfig;
 
 public class TopicQueueMappingCleanService extends ServiceThread {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
 
     private TopicQueueMappingManager topicQueueMappingManager;
     private BrokerOuterAPI brokerOuterAPI;
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/topic/TopicQueueMappingManager.java b/broker/src/main/java/org/apache/rocketmq/broker/topic/TopicQueueMappingManager.java
index 7a8ab7c..65600e0 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/topic/TopicQueueMappingManager.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/topic/TopicQueueMappingManager.java
@@ -27,8 +27,8 @@
 import org.apache.rocketmq.broker.BrokerPathConfigHelper;
 import org.apache.rocketmq.common.ConfigManager;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.protocol.DataVersion;
 import org.apache.rocketmq.remoting.protocol.RemotingCommand;
 import org.apache.rocketmq.remoting.protocol.ResponseCode;
@@ -43,7 +43,7 @@
 import static org.apache.rocketmq.remoting.protocol.RemotingCommand.buildErrorResponse;
 
 public class TopicQueueMappingManager extends ConfigManager {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
     private static final long LOCK_TIMEOUT_MILLIS = 3000;
     private transient final Lock lock = new ReentrantLock();
 
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/topic/TopicRouteInfoManager.java b/broker/src/main/java/org/apache/rocketmq/broker/topic/TopicRouteInfoManager.java
index 715c849..a578873 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/topic/TopicRouteInfoManager.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/topic/TopicRouteInfoManager.java
@@ -36,8 +36,8 @@
 import org.apache.rocketmq.common.MixAll;
 import org.apache.rocketmq.common.constant.LoggerName;
 import org.apache.rocketmq.common.message.MessageQueue;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.exception.RemotingException;
 import org.apache.rocketmq.remoting.protocol.NamespaceUtil;
 import org.apache.rocketmq.remoting.protocol.ResponseCode;
@@ -48,7 +48,7 @@
 
     private static final long GET_TOPIC_ROUTE_TIMEOUT = 3000L;
     private static final long LOCK_TIMEOUT_MILLIS = 3000L;
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
 
     private final Lock lockNamesrv = new ReentrantLock();
     private final ConcurrentMap<String/* Topic */, TopicRouteData> topicRouteTable = new ConcurrentHashMap<>();
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/transaction/AbstractTransactionalMessageCheckListener.java b/broker/src/main/java/org/apache/rocketmq/broker/transaction/AbstractTransactionalMessageCheckListener.java
index 91a80f0..6549615 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/transaction/AbstractTransactionalMessageCheckListener.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/transaction/AbstractTransactionalMessageCheckListener.java
@@ -27,12 +27,12 @@
 import org.apache.rocketmq.common.constant.LoggerName;
 import org.apache.rocketmq.common.message.MessageConst;
 import org.apache.rocketmq.common.message.MessageExt;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.protocol.header.CheckTransactionStateRequestHeader;
 
 public abstract class AbstractTransactionalMessageCheckListener {
-    private static final InternalLogger LOGGER = InternalLoggerFactory.getLogger(LoggerName.TRANSACTION_LOGGER_NAME);
+    private static final Logger LOGGER = LoggerFactory.getLogger(LoggerName.TRANSACTION_LOGGER_NAME);
 
     private BrokerController brokerController;
 
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/transaction/TransactionalMessageCheckService.java b/broker/src/main/java/org/apache/rocketmq/broker/transaction/TransactionalMessageCheckService.java
index 6a3c2d2..2cbf060 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/transaction/TransactionalMessageCheckService.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/transaction/TransactionalMessageCheckService.java
@@ -19,11 +19,11 @@
 import org.apache.rocketmq.broker.BrokerController;
 import org.apache.rocketmq.common.ServiceThread;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 public class TransactionalMessageCheckService extends ServiceThread {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.TRANSACTION_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.TRANSACTION_LOGGER_NAME);
 
     private BrokerController brokerController;
 
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/transaction/queue/DefaultTransactionalMessageCheckListener.java b/broker/src/main/java/org/apache/rocketmq/broker/transaction/queue/DefaultTransactionalMessageCheckListener.java
index a66709a..53080ca 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/transaction/queue/DefaultTransactionalMessageCheckListener.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/transaction/queue/DefaultTransactionalMessageCheckListener.java
@@ -24,8 +24,8 @@
 import org.apache.rocketmq.common.message.MessageConst;
 import org.apache.rocketmq.common.message.MessageDecoder;
 import org.apache.rocketmq.common.message.MessageExt;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.common.message.MessageExtBrokerInner;
 import org.apache.rocketmq.store.PutMessageResult;
 import org.apache.rocketmq.store.PutMessageStatus;
@@ -33,7 +33,7 @@
 import java.util.concurrent.ThreadLocalRandom;
 
 public class DefaultTransactionalMessageCheckListener extends AbstractTransactionalMessageCheckListener {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.TRANSACTION_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.TRANSACTION_LOGGER_NAME);
 
     public DefaultTransactionalMessageCheckListener() {
         super();
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/transaction/queue/TransactionalMessageBridge.java b/broker/src/main/java/org/apache/rocketmq/broker/transaction/queue/TransactionalMessageBridge.java
index 21ba119..3abbc9c 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/transaction/queue/TransactionalMessageBridge.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/transaction/queue/TransactionalMessageBridge.java
@@ -44,10 +44,10 @@
 import org.apache.rocketmq.common.message.MessageQueue;
 import org.apache.rocketmq.common.sysflag.MessageSysFlag;
 import org.apache.rocketmq.common.topic.TopicValidator;
-import org.apache.rocketmq.logging.InnerLoggerFactory;
-import org.apache.rocketmq.logging.InternalLogger;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
 import org.apache.rocketmq.remoting.common.RemotingHelper;
 import org.apache.rocketmq.remoting.protocol.heartbeat.SubscriptionData;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.store.GetMessageResult;
 import org.apache.rocketmq.store.MessageStore;
 import org.apache.rocketmq.store.PutMessageResult;
@@ -58,7 +58,7 @@
 import static org.apache.rocketmq.broker.metrics.BrokerMetricsConstant.LABEL_TOPIC;
 
 public class TransactionalMessageBridge {
-    private static final InternalLogger LOGGER = InnerLoggerFactory.getLogger(LoggerName.TRANSACTION_LOGGER_NAME);
+    private static final Logger LOGGER = LoggerFactory.getLogger(LoggerName.TRANSACTION_LOGGER_NAME);
 
     private final ConcurrentHashMap<Integer, MessageQueue> opQueueMap = new ConcurrentHashMap<>();
     private final BrokerController brokerController;
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/transaction/queue/TransactionalMessageServiceImpl.java b/broker/src/main/java/org/apache/rocketmq/broker/transaction/queue/TransactionalMessageServiceImpl.java
index 2ec5016..1a65f97 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/transaction/queue/TransactionalMessageServiceImpl.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/transaction/queue/TransactionalMessageServiceImpl.java
@@ -40,8 +40,8 @@
 import org.apache.rocketmq.common.message.MessageExtBrokerInner;
 import org.apache.rocketmq.common.message.MessageQueue;
 import org.apache.rocketmq.common.topic.TopicValidator;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.protocol.ResponseCode;
 import org.apache.rocketmq.remoting.protocol.header.EndTransactionRequestHeader;
 import org.apache.rocketmq.store.PutMessageResult;
@@ -49,7 +49,7 @@
 import org.apache.rocketmq.store.config.BrokerRole;
 
 public class TransactionalMessageServiceImpl implements TransactionalMessageService {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.TRANSACTION_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.TRANSACTION_LOGGER_NAME);
 
     private TransactionalMessageBridge transactionalMessageBridge;
 
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/transaction/queue/TransactionalOpBatchService.java b/broker/src/main/java/org/apache/rocketmq/broker/transaction/queue/TransactionalOpBatchService.java
index dfd0474..411a2cf 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/transaction/queue/TransactionalOpBatchService.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/transaction/queue/TransactionalOpBatchService.java
@@ -19,11 +19,11 @@
 import org.apache.rocketmq.broker.BrokerController;
 import org.apache.rocketmq.common.ServiceThread;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 public class TransactionalOpBatchService extends ServiceThread {
-    private static final InternalLogger LOGGER = InternalLoggerFactory.getLogger(LoggerName.TRANSACTION_LOGGER_NAME);
+    private static final Logger LOGGER = LoggerFactory.getLogger(LoggerName.TRANSACTION_LOGGER_NAME);
 
     private BrokerController brokerController;
     private TransactionalMessageServiceImpl transactionalMessageService;
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/util/HookUtils.java b/broker/src/main/java/org/apache/rocketmq/broker/util/HookUtils.java
index c6f7bfa..72eb086 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/util/HookUtils.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/util/HookUtils.java
@@ -32,8 +32,8 @@
 import org.apache.rocketmq.common.sysflag.MessageSysFlag;
 import org.apache.rocketmq.common.topic.TopicValidator;
 import org.apache.rocketmq.common.utils.QueueTypeUtils;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.store.PutMessageResult;
 import org.apache.rocketmq.store.PutMessageStatus;
 import org.apache.rocketmq.store.config.BrokerRole;
@@ -41,7 +41,7 @@
 
 public class HookUtils {
 
-    protected static final InternalLogger LOG = InternalLoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
+    protected static final Logger LOG = LoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
 
     private static AtomicLong printTimes = new AtomicLong(0);
 
diff --git a/distribution/conf/logback_broker.xml b/broker/src/main/resources/rmq.broker.logback.xml
similarity index 68%
rename from distribution/conf/logback_broker.xml
rename to broker/src/main/resources/rmq.broker.logback.xml
index 3daa0b2..72a2c87 100644
--- a/distribution/conf/logback_broker.xml
+++ b/broker/src/main/resources/rmq.broker.logback.xml
@@ -18,15 +18,15 @@
 
 <configuration scan="true" scanPeriod="30 seconds">
     <appender name="DefaultAppender"
-              class="ch.qos.logback.core.rolling.RollingFileAppender">
+              class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.RollingFileAppender">
         <file>${user.home}/logs/rocketmqlogs/${brokerLogDir}/broker_default.log</file>
         <append>true</append>
-        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+        <rollingPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
             <fileNamePattern>${user.home}/logs/rocketmqlogs/otherdays/${brokerLogDir}/broker_default.%i.log.gz</fileNamePattern>
             <minIndex>1</minIndex>
             <maxIndex>10</maxIndex>
         </rollingPolicy>
-        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+        <triggeringPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
             <maxFileSize>100MB</maxFileSize>
         </triggeringPolicy>
         <encoder>
@@ -36,15 +36,15 @@
     </appender>
 
     <appender name="RocketmqBrokerAppender_inner"
-              class="ch.qos.logback.core.rolling.RollingFileAppender">
+              class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.RollingFileAppender">
         <file>${user.home}/logs/rocketmqlogs/${brokerLogDir}/broker.log</file>
         <append>true</append>
-        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+        <rollingPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
             <fileNamePattern>${user.home}/logs/rocketmqlogs/otherdays/${brokerLogDir}/broker.%i.log.gz</fileNamePattern>
             <minIndex>1</minIndex>
             <maxIndex>20</maxIndex>
         </rollingPolicy>
-        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+        <triggeringPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
             <maxFileSize>128MB</maxFileSize>
         </triggeringPolicy>
         <encoder>
@@ -52,20 +52,20 @@
             <charset class="java.nio.charset.Charset">UTF-8</charset>
         </encoder>
     </appender>
-    <appender name="RocketmqBrokerAppender" class="ch.qos.logback.classic.AsyncAppender">
+    <appender name="RocketmqBrokerAppender" class="org.apache.rocketmq.shade.ch.qos.logback.classic.AsyncAppender">
         <appender-ref ref="RocketmqBrokerAppender_inner"/>
     </appender>
 
     <appender name="RocketmqProtectionAppender_inner"
-              class="ch.qos.logback.core.rolling.RollingFileAppender">
+              class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.RollingFileAppender">
         <file>${user.home}/logs/rocketmqlogs/${brokerLogDir}/protection.log</file>
         <append>true</append>
-        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+        <rollingPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
             <fileNamePattern>${user.home}/logs/rocketmqlogs/otherdays/${brokerLogDir}/protection.%i.log.gz</fileNamePattern>
             <minIndex>1</minIndex>
             <maxIndex>10</maxIndex>
         </rollingPolicy>
-        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+        <triggeringPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
             <maxFileSize>100MB</maxFileSize>
         </triggeringPolicy>
         <encoder>
@@ -73,20 +73,20 @@
             <charset class="java.nio.charset.Charset">UTF-8</charset>
         </encoder>
     </appender>
-    <appender name="RocketmqProtectionAppender" class="ch.qos.logback.classic.AsyncAppender">
+    <appender name="RocketmqProtectionAppender" class="org.apache.rocketmq.shade.ch.qos.logback.classic.AsyncAppender">
         <appender-ref ref="RocketmqProtectionAppender_inner"/>
     </appender>
 
     <appender name="RocketmqWaterMarkAppender_inner"
-              class="ch.qos.logback.core.rolling.RollingFileAppender">
+              class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.RollingFileAppender">
         <file>${user.home}/logs/rocketmqlogs/${brokerLogDir}/watermark.log</file>
         <append>true</append>
-        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+        <rollingPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
             <fileNamePattern>${user.home}/logs/rocketmqlogs/otherdays/${brokerLogDir}/watermark.%i.log.gz</fileNamePattern>
             <minIndex>1</minIndex>
             <maxIndex>10</maxIndex>
         </rollingPolicy>
-        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+        <triggeringPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
             <maxFileSize>100MB</maxFileSize>
         </triggeringPolicy>
         <encoder>
@@ -94,20 +94,20 @@
             <charset class="java.nio.charset.Charset">UTF-8</charset>
         </encoder>
     </appender>
-    <appender name="RocketmqWaterMarkAppender" class="ch.qos.logback.classic.AsyncAppender">
+    <appender name="RocketmqWaterMarkAppender" class="org.apache.rocketmq.shade.ch.qos.logback.classic.AsyncAppender">
         <appender-ref ref="RocketmqWaterMarkAppender_inner"/>
     </appender>
 
     <appender name="RocketmqStoreAppender_inner"
-              class="ch.qos.logback.core.rolling.RollingFileAppender">
+              class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.RollingFileAppender">
         <file>${user.home}/logs/rocketmqlogs/${brokerLogDir}/store.log</file>
         <append>true</append>
-        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+        <rollingPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
             <fileNamePattern>${user.home}/logs/rocketmqlogs/otherdays/${brokerLogDir}/store.%i.log.gz</fileNamePattern>
             <minIndex>1</minIndex>
             <maxIndex>10</maxIndex>
         </rollingPolicy>
-        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+        <triggeringPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
             <maxFileSize>128MB</maxFileSize>
         </triggeringPolicy>
         <encoder>
@@ -115,20 +115,20 @@
             <charset class="java.nio.charset.Charset">UTF-8</charset>
         </encoder>
     </appender>
-    <appender name="RocketmqStoreAppender" class="ch.qos.logback.classic.AsyncAppender">
+    <appender name="RocketmqStoreAppender" class="org.apache.rocketmq.shade.ch.qos.logback.classic.AsyncAppender">
         <appender-ref ref="RocketmqStoreAppender_inner"/>
     </appender>
 
     <appender name="RocketmqTrafficAppender_inner"
-              class="ch.qos.logback.core.rolling.RollingFileAppender">
+              class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.RollingFileAppender">
         <file>${user.home}/logs/rocketmqlogs/broker_traffic.log</file>
         <append>true</append>
-        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+        <rollingPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
             <fileNamePattern>${user.home}/logs/rocketmqlogs/otherdays/broker_traffic.%i.log.gz</fileNamePattern>
             <minIndex>1</minIndex>
             <maxIndex>10</maxIndex>
         </rollingPolicy>
-        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+        <triggeringPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
             <maxFileSize>100MB</maxFileSize>
         </triggeringPolicy>
         <encoder>
@@ -136,20 +136,20 @@
             <charset class="java.nio.charset.Charset">UTF-8</charset>
         </encoder>
     </appender>
-    <appender name="RocketmqTrafficAppender" class="ch.qos.logback.classic.AsyncAppender">
+    <appender name="RocketmqTrafficAppender" class="org.apache.rocketmq.shade.ch.qos.logback.classic.AsyncAppender">
         <appender-ref ref="RocketmqTrafficAppender_inner"/>
     </appender>
 
     <appender name="RocketmqRemotingAppender_inner"
-              class="ch.qos.logback.core.rolling.RollingFileAppender">
+              class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.RollingFileAppender">
         <file>${user.home}/logs/rocketmqlogs/${brokerLogDir}/remoting.log</file>
         <append>true</append>
-        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+        <rollingPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
             <fileNamePattern>${user.home}/logs/rocketmqlogs/otherdays/${brokerLogDir}/remoting.%i.log.gz</fileNamePattern>
             <minIndex>1</minIndex>
             <maxIndex>10</maxIndex>
         </rollingPolicy>
-        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+        <triggeringPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
             <maxFileSize>100MB</maxFileSize>
         </triggeringPolicy>
         <encoder>
@@ -157,20 +157,20 @@
             <charset class="java.nio.charset.Charset">UTF-8</charset>
         </encoder>
     </appender>
-    <appender name="RocketmqRemotingAppender" class="ch.qos.logback.classic.AsyncAppender">
+    <appender name="RocketmqRemotingAppender" class="org.apache.rocketmq.shade.ch.qos.logback.classic.AsyncAppender">
         <appender-ref ref="RocketmqRemotingAppender_inner"/>
     </appender>
 
     <appender name="RocketmqStoreErrorAppender_inner"
-              class="ch.qos.logback.core.rolling.RollingFileAppender">
+              class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.RollingFileAppender">
         <file>${user.home}/logs/rocketmqlogs/${brokerLogDir}/storeerror.log</file>
         <append>true</append>
-        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+        <rollingPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
             <fileNamePattern>${user.home}/logs/rocketmqlogs/otherdays/${brokerLogDir}/storeerror.%i.log.gz</fileNamePattern>
             <minIndex>1</minIndex>
             <maxIndex>10</maxIndex>
         </rollingPolicy>
-        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+        <triggeringPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
             <maxFileSize>100MB</maxFileSize>
         </triggeringPolicy>
         <encoder>
@@ -178,21 +178,21 @@
             <charset class="java.nio.charset.Charset">UTF-8</charset>
         </encoder>
     </appender>
-    <appender name="RocketmqStoreErrorAppender" class="ch.qos.logback.classic.AsyncAppender">
+    <appender name="RocketmqStoreErrorAppender" class="org.apache.rocketmq.shade.ch.qos.logback.classic.AsyncAppender">
         <appender-ref ref="RocketmqStoreErrorAppender_inner"/>
     </appender>
 
 
     <appender name="RocketmqTransactionAppender_inner"
-              class="ch.qos.logback.core.rolling.RollingFileAppender">
+              class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.RollingFileAppender">
         <file>${user.home}/logs/rocketmqlogs/${brokerLogDir}/transaction.log</file>
         <append>true</append>
-        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+        <rollingPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
             <fileNamePattern>${user.home}/logs/rocketmqlogs/otherdays/${brokerLogDir}/transaction.%i.log.gz</fileNamePattern>
             <minIndex>1</minIndex>
             <maxIndex>10</maxIndex>
         </rollingPolicy>
-        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+        <triggeringPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
             <maxFileSize>100MB</maxFileSize>
         </triggeringPolicy>
         <encoder>
@@ -200,20 +200,20 @@
             <charset class="java.nio.charset.Charset">UTF-8</charset>
         </encoder>
     </appender>
-    <appender name="RocketmqTransactionAppender" class="ch.qos.logback.classic.AsyncAppender">
+    <appender name="RocketmqTransactionAppender" class="org.apache.rocketmq.shade.ch.qos.logback.classic.AsyncAppender">
         <appender-ref ref="RocketmqTransactionAppender_inner"/>
     </appender>
 
     <appender name="RocketmqRebalanceLockAppender_inner"
-              class="ch.qos.logback.core.rolling.RollingFileAppender">
+              class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.RollingFileAppender">
         <file>${user.home}/logs/rocketmqlogs/${brokerLogDir}/lock.log</file>
         <append>true</append>
-        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+        <rollingPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
             <fileNamePattern>${user.home}/logs/rocketmqlogs/otherdays/${brokerLogDir}/lock.%i.log.gz</fileNamePattern>
             <minIndex>1</minIndex>
             <maxIndex>5</maxIndex>
         </rollingPolicy>
-        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+        <triggeringPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
             <maxFileSize>100MB</maxFileSize>
         </triggeringPolicy>
         <encoder>
@@ -221,20 +221,20 @@
             <charset class="java.nio.charset.Charset">UTF-8</charset>
         </encoder>
     </appender>
-    <appender name="RocketmqRebalanceLockAppender" class="ch.qos.logback.classic.AsyncAppender">
+    <appender name="RocketmqRebalanceLockAppender" class="org.apache.rocketmq.shade.ch.qos.logback.classic.AsyncAppender">
         <appender-ref ref="RocketmqRebalanceLockAppender_inner"/>
     </appender>
 
     <appender name="RocketmqFilterAppender_inner"
-              class="ch.qos.logback.core.rolling.RollingFileAppender">
+              class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.RollingFileAppender">
         <file>${user.home}/logs/rocketmqlogs/${brokerLogDir}/filter.log</file>
         <append>true</append>
-        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+        <rollingPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
             <fileNamePattern>${user.home}/logs/rocketmqlogs/otherdays/${brokerLogDir}/filter.%i.log.gz</fileNamePattern>
             <minIndex>1</minIndex>
             <maxIndex>10</maxIndex>
         </rollingPolicy>
-        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+        <triggeringPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
             <maxFileSize>100MB</maxFileSize>
         </triggeringPolicy>
         <encoder>
@@ -242,20 +242,20 @@
             <charset class="java.nio.charset.Charset">UTF-8</charset>
         </encoder>
     </appender>
-    <appender name="RocketmqFilterAppender" class="ch.qos.logback.classic.AsyncAppender">
+    <appender name="RocketmqFilterAppender" class="org.apache.rocketmq.shade.ch.qos.logback.classic.AsyncAppender">
         <appender-ref ref="RocketmqFilterAppender_inner"/>
     </appender>
 
     <appender name="RocketmqStatsAppender"
-              class="ch.qos.logback.core.rolling.RollingFileAppender">
+              class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.RollingFileAppender">
         <file>${user.home}/logs/rocketmqlogs/${brokerLogDir}/stats.log</file>
         <append>true</append>
-        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+        <rollingPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
             <fileNamePattern>${user.home}/logs/rocketmqlogs/otherdays/${brokerLogDir}/stats.%i.log.gz</fileNamePattern>
             <minIndex>1</minIndex>
             <maxIndex>5</maxIndex>
         </rollingPolicy>
-        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+        <triggeringPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
             <maxFileSize>100MB</maxFileSize>
         </triggeringPolicy>
         <encoder>
@@ -265,31 +265,31 @@
     </appender>
 
     <appender name="RocketmqCommercialAppender"
-              class="ch.qos.logback.core.rolling.RollingFileAppender">
+              class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.RollingFileAppender">
         <file>${user.home}/logs/rocketmqlogs/${brokerLogDir}/commercial.log</file>
         <append>true</append>
-        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+        <rollingPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
             <fileNamePattern>${user.home}/logs/rocketmqlogs/otherdays/${brokerLogDir}/commercial.%i.log.gz</fileNamePattern>
             <minIndex>1</minIndex>
             <maxIndex>10</maxIndex>
         </rollingPolicy>
-        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+        <triggeringPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
             <maxFileSize>500MB</maxFileSize>
         </triggeringPolicy>
     </appender>
 
     <appender name="RocketmqPopAppender_inner"
-              class="ch.qos.logback.core.rolling.RollingFileAppender">
+              class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.RollingFileAppender">
         <file>${user.home}/logs/rocketmqlogs/pop.log</file>
         <append>true</append>
-        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+        <rollingPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
             <fileNamePattern>${user.home}/logs/rocketmqlogs/otherdays/pop.%i.log
             </fileNamePattern>
             <minIndex>1</minIndex>
             <maxIndex>20</maxIndex>
         </rollingPolicy>
         <triggeringPolicy
-            class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+            class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
             <maxFileSize>128MB</maxFileSize>
         </triggeringPolicy>
         <encoder>
@@ -298,11 +298,11 @@
         </encoder>
     </appender>
 
-    <appender name="RocketmqPopAppender" class="ch.qos.logback.classic.AsyncAppender">
+    <appender name="RocketmqPopAppender" class="org.apache.rocketmq.shade.ch.qos.logback.classic.AsyncAppender">
         <appender-ref ref="RocketmqPopAppender_inner"/>
     </appender>
 
-    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+    <appender name="STDOUT" class="org.apache.rocketmq.shade.ch.qos.logback.core.ConsoleAppender">
         <append>true</append>
         <encoder>
             <pattern>%d{yyy-MM-dd HH:mm:ss,GMT+8} %p %t - %m%n</pattern>
diff --git a/broker/src/test/java/org/apache/rocketmq/broker/util/TransactionalMessageServiceImpl.java b/broker/src/test/java/org/apache/rocketmq/broker/util/TransactionalMessageServiceImpl.java
index 0f7cc4f..8b2d7f1 100644
--- a/broker/src/test/java/org/apache/rocketmq/broker/util/TransactionalMessageServiceImpl.java
+++ b/broker/src/test/java/org/apache/rocketmq/broker/util/TransactionalMessageServiceImpl.java
@@ -23,13 +23,13 @@
 import org.apache.rocketmq.common.constant.LoggerName;
 import org.apache.rocketmq.common.message.MessageExt;
 import org.apache.rocketmq.common.message.MessageExtBrokerInner;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.protocol.header.EndTransactionRequestHeader;
 import org.apache.rocketmq.store.PutMessageResult;
 
 public class TransactionalMessageServiceImpl implements TransactionalMessageService {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.TRANSACTION_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.TRANSACTION_LOGGER_NAME);
 
     @Override
     public PutMessageResult prepareMessage(MessageExtBrokerInner messageInner) {
diff --git a/broker/src/test/resources/logback-test.xml b/broker/src/test/resources/logback-test.xml
deleted file mode 100644
index 7718d4a..0000000
--- a/broker/src/test/resources/logback-test.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-  -->
-
-<configuration>
-
-    <appender name="DefaultAppender" class="ch.qos.logback.core.ConsoleAppender">
-        <encoder>
-            <pattern>%d{yyy-MM-dd HH:mm:ss,GMT+8} %p %t - %m%n</pattern>
-            <charset class="java.nio.charset.Charset">UTF-8</charset>
-        </encoder>
-    </appender>
-
-    <root>
-        <level value="OFF"/>
-        <appender-ref ref="DefaultAppender"/>
-    </root>
-</configuration>
diff --git a/store/src/test/resources/logback-test.xml b/broker/src/test/resources/rmq.logback-test.xml
similarity index 64%
copy from store/src/test/resources/logback-test.xml
copy to broker/src/test/resources/rmq.logback-test.xml
index a033816..c3ec0d1 100644
--- a/store/src/test/resources/logback-test.xml
+++ b/broker/src/test/resources/rmq.logback-test.xml
@@ -17,19 +17,20 @@
   -->
 <configuration>
 
-    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
-        <encoder>
-            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n</pattern>
-            <charset class="java.nio.charset.Charset">UTF-8</charset>
-        </encoder>
+    <appender name="CONSOLE" class="org.apache.rocketmq.shade.ch.qos.logback.core.ConsoleAppender">
+        <layout class="org.apache.rocketmq.shade.ch.qos.logback.classic.PatternLayout">
+            <Pattern>
+                %d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n
+            </Pattern>
+        </layout>
     </appender>
 
-    <logger name="org.apache.rocketmq.store" level="WARN" additivity="false">
-        <appender-ref ref="STDOUT"/>
+    <logger name="org.apache.rocketmq" level="error" additivity="false">
+        <appender-ref ref="CONSOLE"/>
     </logger>
 
-    <root level="OFF">
-        <appender-ref ref="STDOUT"/>
+    <root level="error">
+        <appender-ref ref="CONSOLE"/>
     </root>
 
-</configuration>
+</configuration>
\ No newline at end of file
diff --git a/client/BUILD.bazel b/client/BUILD.bazel
index 8637a23..353fc0b 100644
--- a/client/BUILD.bazel
+++ b/client/BUILD.bazel
@@ -23,7 +23,6 @@
     deps = [
         "//common",
         "//remoting",
-        "//logging",        
         "@maven//:org_apache_commons_commons_lang3",
         "@maven//:commons_validator_commons_validator",
         "@maven//:com_github_luben_zstd_jni",
@@ -32,6 +31,7 @@
         "@maven//:io_netty_netty_all",
         "@maven//:io_opentracing_opentracing_api",
         "@maven//:commons_collections_commons_collections",
+        "@maven//:io_github_aliyun_mq_rocketmq_slf4j_api",
     ],
 )
 
diff --git a/client/pom.xml b/client/pom.xml
index d572eaf..9d0dd30 100644
--- a/client/pom.xml
+++ b/client/pom.xml
@@ -35,6 +35,7 @@
         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>rocketmq-remoting</artifactId>
+            <version>${project.version}</version>
             <exclusions>
                 <exclusion>
                     <groupId>io.netty</groupId>
@@ -58,5 +59,13 @@
             <groupId>com.google.guava</groupId>
             <artifactId>guava</artifactId>
         </dependency>
+        <dependency>
+            <groupId>io.github.aliyun-mq</groupId>
+            <artifactId>rocketmq-slf4j-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.github.aliyun-mq</groupId>
+            <artifactId>rocketmq-logback-classic</artifactId>
+        </dependency>
     </dependencies>
 </project>
diff --git a/client/src/main/java/org/apache/rocketmq/client/MQHelper.java b/client/src/main/java/org/apache/rocketmq/client/MQHelper.java
index 610d2eb..6c35cd1 100644
--- a/client/src/main/java/org/apache/rocketmq/client/MQHelper.java
+++ b/client/src/main/java/org/apache/rocketmq/client/MQHelper.java
@@ -19,12 +19,14 @@
 import java.util.Set;
 import java.util.TreeSet;
 import org.apache.rocketmq.client.consumer.DefaultMQPullConsumer;
-import org.apache.rocketmq.client.log.ClientLogger;
 import org.apache.rocketmq.common.message.MessageQueue;
-import org.apache.rocketmq.logging.InternalLogger;
 import org.apache.rocketmq.remoting.protocol.heartbeat.MessageModel;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 public class MQHelper {
+    private static final Logger log = LoggerFactory.getLogger(MQHelper.class);
+
     @Deprecated
     public static void resetOffsetByTimestamp(
         final MessageModel messageModel,
@@ -37,11 +39,11 @@
     /**
      * Reset consumer topic offset according to time
      *
-     * @param messageModel which model
-     * @param instanceName which instance
+     * @param messageModel  which model
+     * @param instanceName  which instance
      * @param consumerGroup consumer group
-     * @param topic topic
-     * @param timestamp time
+     * @param topic         topic
+     * @param timestamp     time
      */
     public static void resetOffsetByTimestamp(
         final MessageModel messageModel,
@@ -49,7 +51,6 @@
         final String consumerGroup,
         final String topic,
         final long timestamp) throws Exception {
-        final InternalLogger log = ClientLogger.getLog();
 
         DefaultMQPullConsumer consumer = new DefaultMQPullConsumer(consumerGroup);
         consumer.setInstanceName(instanceName);
diff --git a/client/src/main/java/org/apache/rocketmq/client/consumer/DefaultLitePullConsumer.java b/client/src/main/java/org/apache/rocketmq/client/consumer/DefaultLitePullConsumer.java
index 4e03fd6..5de8604 100644
--- a/client/src/main/java/org/apache/rocketmq/client/consumer/DefaultLitePullConsumer.java
+++ b/client/src/main/java/org/apache/rocketmq/client/consumer/DefaultLitePullConsumer.java
@@ -25,7 +25,6 @@
 import org.apache.rocketmq.client.consumer.store.OffsetStore;
 import org.apache.rocketmq.client.exception.MQClientException;
 import org.apache.rocketmq.client.impl.consumer.DefaultLitePullConsumerImpl;
-import org.apache.rocketmq.client.log.ClientLogger;
 import org.apache.rocketmq.client.trace.AsyncTraceDispatcher;
 import org.apache.rocketmq.client.trace.TraceDispatcher;
 import org.apache.rocketmq.client.trace.hook.ConsumeMessageTraceHookImpl;
@@ -34,14 +33,15 @@
 import org.apache.rocketmq.common.consumer.ConsumeFromWhere;
 import org.apache.rocketmq.common.message.MessageExt;
 import org.apache.rocketmq.common.message.MessageQueue;
-import org.apache.rocketmq.logging.InternalLogger;
 import org.apache.rocketmq.remoting.RPCHook;
 import org.apache.rocketmq.remoting.protocol.NamespaceUtil;
 import org.apache.rocketmq.remoting.protocol.heartbeat.MessageModel;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 public class DefaultLitePullConsumer extends ClientConfig implements LitePullConsumer {
 
-    private final InternalLogger log = ClientLogger.getLog();
+    private static final Logger log = LoggerFactory.getLogger(DefaultLitePullConsumer.class);
 
     private final DefaultLitePullConsumerImpl defaultLitePullConsumerImpl;
 
diff --git a/client/src/main/java/org/apache/rocketmq/client/consumer/DefaultMQPushConsumer.java b/client/src/main/java/org/apache/rocketmq/client/consumer/DefaultMQPushConsumer.java
index 2c82835..7192098 100644
--- a/client/src/main/java/org/apache/rocketmq/client/consumer/DefaultMQPushConsumer.java
+++ b/client/src/main/java/org/apache/rocketmq/client/consumer/DefaultMQPushConsumer.java
@@ -30,7 +30,6 @@
 import org.apache.rocketmq.client.exception.MQBrokerException;
 import org.apache.rocketmq.client.exception.MQClientException;
 import org.apache.rocketmq.client.impl.consumer.DefaultMQPushConsumerImpl;
-import org.apache.rocketmq.client.log.ClientLogger;
 import org.apache.rocketmq.client.trace.AsyncTraceDispatcher;
 import org.apache.rocketmq.client.trace.TraceDispatcher;
 import org.apache.rocketmq.client.trace.hook.ConsumeMessageTraceHookImpl;
@@ -40,11 +39,12 @@
 import org.apache.rocketmq.common.message.MessageDecoder;
 import org.apache.rocketmq.common.message.MessageExt;
 import org.apache.rocketmq.common.message.MessageQueue;
-import org.apache.rocketmq.logging.InternalLogger;
 import org.apache.rocketmq.remoting.RPCHook;
 import org.apache.rocketmq.remoting.exception.RemotingException;
 import org.apache.rocketmq.remoting.protocol.NamespaceUtil;
 import org.apache.rocketmq.remoting.protocol.heartbeat.MessageModel;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 /**
  * In most scenarios, this is the mostly recommended class to consume messages.
@@ -63,7 +63,7 @@
  */
 public class DefaultMQPushConsumer extends ClientConfig implements MQPushConsumer {
 
-    private final InternalLogger log = ClientLogger.getLog();
+    private final Logger log = LoggerFactory.getLogger(DefaultMQPushConsumer.class);
 
     /**
      * Internal implementation. Most of the functions herein are delegated to it.
diff --git a/client/src/main/java/org/apache/rocketmq/client/consumer/MQPullConsumerScheduleService.java b/client/src/main/java/org/apache/rocketmq/client/consumer/MQPullConsumerScheduleService.java
index f53dd31..45eb0db 100644
--- a/client/src/main/java/org/apache/rocketmq/client/consumer/MQPullConsumerScheduleService.java
+++ b/client/src/main/java/org/apache/rocketmq/client/consumer/MQPullConsumerScheduleService.java
@@ -24,13 +24,13 @@
 import java.util.concurrent.ScheduledThreadPoolExecutor;
 import java.util.concurrent.TimeUnit;
 import org.apache.rocketmq.client.exception.MQClientException;
-import org.apache.rocketmq.client.log.ClientLogger;
 import org.apache.rocketmq.common.ThreadFactoryImpl;
 import org.apache.rocketmq.common.message.MessageQueue;
-import org.apache.rocketmq.logging.InternalLogger;
 import org.apache.rocketmq.remoting.RPCHook;
 import org.apache.rocketmq.remoting.protocol.NamespaceUtil;
 import org.apache.rocketmq.remoting.protocol.heartbeat.MessageModel;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 /**
  * Schedule service for pull consumer.
@@ -38,7 +38,7 @@
  * DefaultLitePullConsumer} is recommend to use in the scenario of actively pulling messages.
  */
 public class MQPullConsumerScheduleService {
-    private final InternalLogger log = ClientLogger.getLog();
+    private final Logger log = LoggerFactory.getLogger(MQPullConsumerScheduleService.class);
     private final MessageQueueListener messageQueueListener = new MessageQueueListenerImpl();
     private final ConcurrentMap<MessageQueue, PullTaskImpl> taskTable =
         new ConcurrentHashMap<>();
diff --git a/client/src/main/java/org/apache/rocketmq/client/consumer/rebalance/AbstractAllocateMessageQueueStrategy.java b/client/src/main/java/org/apache/rocketmq/client/consumer/rebalance/AbstractAllocateMessageQueueStrategy.java
index 39b44e5..a550f7e 100644
--- a/client/src/main/java/org/apache/rocketmq/client/consumer/rebalance/AbstractAllocateMessageQueueStrategy.java
+++ b/client/src/main/java/org/apache/rocketmq/client/consumer/rebalance/AbstractAllocateMessageQueueStrategy.java
@@ -21,21 +21,13 @@
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.rocketmq.client.consumer.AllocateMessageQueueStrategy;
-import org.apache.rocketmq.client.log.ClientLogger;
 import org.apache.rocketmq.common.message.MessageQueue;
-import org.apache.rocketmq.logging.InternalLogger;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 public abstract class AbstractAllocateMessageQueueStrategy implements AllocateMessageQueueStrategy {
 
-    protected InternalLogger log;
-
-    AbstractAllocateMessageQueueStrategy() {
-        this.log = ClientLogger.getLog();
-    }
-
-    public AbstractAllocateMessageQueueStrategy(InternalLogger log) {
-        this.log = log;
-    }
+    private static final Logger log = LoggerFactory.getLogger(AbstractAllocateMessageQueueStrategy.class);
 
     public boolean check(String consumerGroup, String currentCID, List<MessageQueue> mqAll,
         List<String> cidAll) {
diff --git a/client/src/main/java/org/apache/rocketmq/client/consumer/rebalance/AllocateMessageQueueAveragely.java b/client/src/main/java/org/apache/rocketmq/client/consumer/rebalance/AllocateMessageQueueAveragely.java
index c3d3dbc..75e5d1c 100644
--- a/client/src/main/java/org/apache/rocketmq/client/consumer/rebalance/AllocateMessageQueueAveragely.java
+++ b/client/src/main/java/org/apache/rocketmq/client/consumer/rebalance/AllocateMessageQueueAveragely.java
@@ -18,8 +18,6 @@
 
 import java.util.ArrayList;
 import java.util.List;
-import org.apache.rocketmq.client.log.ClientLogger;
-import org.apache.rocketmq.logging.InternalLogger;
 import org.apache.rocketmq.common.message.MessageQueue;
 
 /**
@@ -27,14 +25,6 @@
  */
 public class AllocateMessageQueueAveragely extends AbstractAllocateMessageQueueStrategy {
 
-    public AllocateMessageQueueAveragely() {
-        log = ClientLogger.getLog();
-    }
-
-    public AllocateMessageQueueAveragely(InternalLogger log) {
-        super(log);
-    }
-
     @Override
     public List<MessageQueue> allocate(String consumerGroup, String currentCID, List<MessageQueue> mqAll,
         List<String> cidAll) {
diff --git a/client/src/main/java/org/apache/rocketmq/client/consumer/rebalance/AllocateMessageQueueAveragelyByCircle.java b/client/src/main/java/org/apache/rocketmq/client/consumer/rebalance/AllocateMessageQueueAveragelyByCircle.java
index 10f8c9d..cc618a8 100644
--- a/client/src/main/java/org/apache/rocketmq/client/consumer/rebalance/AllocateMessageQueueAveragelyByCircle.java
+++ b/client/src/main/java/org/apache/rocketmq/client/consumer/rebalance/AllocateMessageQueueAveragelyByCircle.java
@@ -18,8 +18,6 @@
 
 import java.util.ArrayList;
 import java.util.List;
-import org.apache.rocketmq.client.log.ClientLogger;
-import org.apache.rocketmq.logging.InternalLogger;
 import org.apache.rocketmq.common.message.MessageQueue;
 
 /**
@@ -27,14 +25,6 @@
  */
 public class AllocateMessageQueueAveragelyByCircle extends AbstractAllocateMessageQueueStrategy {
 
-    public AllocateMessageQueueAveragelyByCircle() {
-        log = ClientLogger.getLog();
-    }
-
-    public AllocateMessageQueueAveragelyByCircle(InternalLogger log) {
-        super(log);
-    }
-
     @Override
     public List<MessageQueue> allocate(String consumerGroup, String currentCID, List<MessageQueue> mqAll,
         List<String> cidAll) {
diff --git a/client/src/main/java/org/apache/rocketmq/client/consumer/store/LocalFileOffsetStore.java b/client/src/main/java/org/apache/rocketmq/client/consumer/store/LocalFileOffsetStore.java
index 108130d..d24478a 100644
--- a/client/src/main/java/org/apache/rocketmq/client/consumer/store/LocalFileOffsetStore.java
+++ b/client/src/main/java/org/apache/rocketmq/client/consumer/store/LocalFileOffsetStore.java
@@ -28,13 +28,13 @@
 import org.apache.rocketmq.client.exception.MQBrokerException;
 import org.apache.rocketmq.client.exception.MQClientException;
 import org.apache.rocketmq.client.impl.factory.MQClientInstance;
-import org.apache.rocketmq.client.log.ClientLogger;
 import org.apache.rocketmq.common.MixAll;
 import org.apache.rocketmq.common.UtilAll;
 import org.apache.rocketmq.common.help.FAQUrl;
-import org.apache.rocketmq.logging.InternalLogger;
 import org.apache.rocketmq.common.message.MessageQueue;
 import org.apache.rocketmq.remoting.exception.RemotingException;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 /**
  * Local storage implementation
@@ -43,7 +43,7 @@
     public final static String LOCAL_OFFSET_STORE_DIR = System.getProperty(
         "rocketmq.client.localOffsetStoreDir",
         System.getProperty("user.home") + File.separator + ".rocketmq_offsets");
-    private final static InternalLogger log = ClientLogger.getLog();
+    private final static Logger log = LoggerFactory.getLogger(LocalFileOffsetStore.class);
     private final MQClientInstance mQClientFactory;
     private final String groupName;
     private final String storePath;
diff --git a/client/src/main/java/org/apache/rocketmq/client/consumer/store/RemoteBrokerOffsetStore.java b/client/src/main/java/org/apache/rocketmq/client/consumer/store/RemoteBrokerOffsetStore.java
index 98e6c76..3a59736 100644
--- a/client/src/main/java/org/apache/rocketmq/client/consumer/store/RemoteBrokerOffsetStore.java
+++ b/client/src/main/java/org/apache/rocketmq/client/consumer/store/RemoteBrokerOffsetStore.java
@@ -28,20 +28,20 @@
 import org.apache.rocketmq.client.exception.OffsetNotFoundException;
 import org.apache.rocketmq.client.impl.FindBrokerResult;
 import org.apache.rocketmq.client.impl.factory.MQClientInstance;
-import org.apache.rocketmq.client.log.ClientLogger;
 import org.apache.rocketmq.common.MixAll;
 import org.apache.rocketmq.common.UtilAll;
 import org.apache.rocketmq.common.message.MessageQueue;
-import org.apache.rocketmq.logging.InternalLogger;
 import org.apache.rocketmq.remoting.exception.RemotingException;
 import org.apache.rocketmq.remoting.protocol.header.QueryConsumerOffsetRequestHeader;
 import org.apache.rocketmq.remoting.protocol.header.UpdateConsumerOffsetRequestHeader;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 /**
  * Remote storage implementation
  */
 public class RemoteBrokerOffsetStore implements OffsetStore {
-    private final static InternalLogger log = ClientLogger.getLog();
+    private final static Logger log = LoggerFactory.getLogger(RemoteBrokerOffsetStore.class);
     private final MQClientInstance mQClientFactory;
     private final String groupName;
     private ConcurrentMap<MessageQueue, AtomicLong> offsetTable =
diff --git a/client/src/main/java/org/apache/rocketmq/client/impl/ClientRemotingProcessor.java b/client/src/main/java/org/apache/rocketmq/client/impl/ClientRemotingProcessor.java
index 501ad4c..263b9e1 100644
--- a/client/src/main/java/org/apache/rocketmq/client/impl/ClientRemotingProcessor.java
+++ b/client/src/main/java/org/apache/rocketmq/client/impl/ClientRemotingProcessor.java
@@ -24,7 +24,6 @@
 import org.apache.commons.lang3.StringUtils;
 import org.apache.rocketmq.client.impl.factory.MQClientInstance;
 import org.apache.rocketmq.client.impl.producer.MQProducerInner;
-import org.apache.rocketmq.client.log.ClientLogger;
 import org.apache.rocketmq.client.producer.RequestFutureHolder;
 import org.apache.rocketmq.client.producer.RequestResponseFuture;
 import org.apache.rocketmq.common.UtilAll;
@@ -37,7 +36,6 @@
 import org.apache.rocketmq.common.message.MessageQueue;
 import org.apache.rocketmq.common.sysflag.MessageSysFlag;
 import org.apache.rocketmq.common.utils.NetworkUtil;
-import org.apache.rocketmq.logging.InternalLogger;
 import org.apache.rocketmq.remoting.common.RemotingHelper;
 import org.apache.rocketmq.remoting.exception.RemotingCommandException;
 import org.apache.rocketmq.remoting.netty.NettyRequestProcessor;
@@ -56,9 +54,11 @@
 import org.apache.rocketmq.remoting.protocol.header.NotifyConsumerIdsChangedRequestHeader;
 import org.apache.rocketmq.remoting.protocol.header.ReplyMessageRequestHeader;
 import org.apache.rocketmq.remoting.protocol.header.ResetOffsetRequestHeader;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 public class ClientRemotingProcessor implements NettyRequestProcessor {
-    private final InternalLogger log = ClientLogger.getLog();
+    private final Logger logger = LoggerFactory.getLogger(ClientRemotingProcessor.class);
     private final MQClientInstance mqClientFactory;
 
     public ClientRemotingProcessor(final MQClientInstance mqClientFactory) {
@@ -119,13 +119,13 @@
                     final String addr = RemotingHelper.parseChannelRemoteAddr(ctx.channel());
                     producer.checkTransactionState(addr, messageExt, requestHeader);
                 } else {
-                    log.debug("checkTransactionState, pick producer by group[{}] failed", group);
+                    logger.debug("checkTransactionState, pick producer by group[{}] failed", group);
                 }
             } else {
-                log.warn("checkTransactionState, pick producer group failed");
+                logger.warn("checkTransactionState, pick producer group failed");
             }
         } else {
-            log.warn("checkTransactionState, decode message failed");
+            logger.warn("checkTransactionState, decode message failed");
         }
 
         return null;
@@ -136,12 +136,12 @@
         try {
             final NotifyConsumerIdsChangedRequestHeader requestHeader =
                 (NotifyConsumerIdsChangedRequestHeader) request.decodeCommandCustomHeader(NotifyConsumerIdsChangedRequestHeader.class);
-            log.info("receive broker's notification[{}], the consumer group: {} changed, rebalance immediately",
+            logger.info("receive broker's notification[{}], the consumer group: {} changed, rebalance immediately",
                 RemotingHelper.parseChannelRemoteAddr(ctx.channel()),
                 requestHeader.getConsumerGroup());
             this.mqClientFactory.rebalanceImmediately();
         } catch (Exception e) {
-            log.error("notifyConsumerIdsChanged exception", UtilAll.exceptionSimpleDesc(e));
+            logger.error("notifyConsumerIdsChanged exception", UtilAll.exceptionSimpleDesc(e));
         }
         return null;
     }
@@ -150,7 +150,7 @@
         RemotingCommand request) throws RemotingCommandException {
         final ResetOffsetRequestHeader requestHeader =
             (ResetOffsetRequestHeader) request.decodeCommandCustomHeader(ResetOffsetRequestHeader.class);
-        log.info("invoke reset offset operation from broker. brokerAddr={}, topic={}, group={}, timestamp={}",
+        logger.info("invoke reset offset operation from broker. brokerAddr={}, topic={}, group={}, timestamp={}",
             RemotingHelper.parseChannelRemoteAddr(ctx.channel()), requestHeader.getTopic(), requestHeader.getGroup(),
             requestHeader.getTimestamp());
         Map<MessageQueue, Long> offsetTable = new HashMap<>();
@@ -252,7 +252,7 @@
                     Compressor compressor = CompressorFactory.getCompressor(MessageSysFlag.getCompressionType(sysFlag));
                     body = compressor.decompress(body);
                 } catch (IOException e) {
-                    log.warn("err when uncompress constant", e);
+                    logger.warn("err when uncompress constant", e);
                 }
             }
             msg.setBody(body);
@@ -261,14 +261,14 @@
             MessageAccessor.putProperty(msg, MessageConst.PROPERTY_REPLY_MESSAGE_ARRIVE_TIME, String.valueOf(receiveTime));
             msg.setBornTimestamp(requestHeader.getBornTimestamp());
             msg.setReconsumeTimes(requestHeader.getReconsumeTimes() == null ? 0 : requestHeader.getReconsumeTimes());
-            log.debug("receive reply message :{}", msg);
+            logger.debug("receive reply message :{}", msg);
 
             processReplyMessage(msg);
 
             response.setCode(ResponseCode.SUCCESS);
             response.setRemark(null);
         } catch (Exception e) {
-            log.warn("unknown err when receiveReplyMsg", e);
+            logger.warn("unknown err when receiveReplyMsg", e);
             response.setCode(ResponseCode.SYSTEM_ERROR);
             response.setRemark("process reply message fail");
         }
@@ -288,7 +288,7 @@
             }
         } else {
             String bornHost = replyMsg.getBornHostString();
-            log.warn(String.format("receive reply message, but not matched any request, CorrelationId: %s , reply from host: %s",
+            logger.warn(String.format("receive reply message, but not matched any request, CorrelationId: %s , reply from host: %s",
                 correlationId, bornHost));
         }
     }
diff --git a/client/src/main/java/org/apache/rocketmq/client/impl/MQAdminImpl.java b/client/src/main/java/org/apache/rocketmq/client/impl/MQAdminImpl.java
index 1124798..5986722 100644
--- a/client/src/main/java/org/apache/rocketmq/client/impl/MQAdminImpl.java
+++ b/client/src/main/java/org/apache/rocketmq/client/impl/MQAdminImpl.java
@@ -34,7 +34,6 @@
 import org.apache.rocketmq.client.exception.MQClientException;
 import org.apache.rocketmq.client.impl.factory.MQClientInstance;
 import org.apache.rocketmq.client.impl.producer.TopicPublishInfo;
-import org.apache.rocketmq.client.log.ClientLogger;
 import org.apache.rocketmq.common.MixAll;
 import org.apache.rocketmq.common.TopicConfig;
 import org.apache.rocketmq.common.help.FAQUrl;
@@ -44,7 +43,6 @@
 import org.apache.rocketmq.common.message.MessageId;
 import org.apache.rocketmq.common.message.MessageQueue;
 import org.apache.rocketmq.common.utils.NetworkUtil;
-import org.apache.rocketmq.logging.InternalLogger;
 import org.apache.rocketmq.remoting.InvokeCallback;
 import org.apache.rocketmq.remoting.exception.RemotingCommandException;
 import org.apache.rocketmq.remoting.exception.RemotingException;
@@ -56,10 +54,12 @@
 import org.apache.rocketmq.remoting.protocol.header.QueryMessageResponseHeader;
 import org.apache.rocketmq.remoting.protocol.route.BrokerData;
 import org.apache.rocketmq.remoting.protocol.route.TopicRouteData;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 public class MQAdminImpl {
 
-    private final InternalLogger log = ClientLogger.getLog();
+    private static final Logger log = LoggerFactory.getLogger(MQAdminImpl.class);
     private final MQClientInstance mQClientFactory;
     private long timeoutMillis = 6000;
 
diff --git a/client/src/main/java/org/apache/rocketmq/client/impl/MQClientAPIImpl.java b/client/src/main/java/org/apache/rocketmq/client/impl/MQClientAPIImpl.java
index f0d6f8d..138fc9a 100644
--- a/client/src/main/java/org/apache/rocketmq/client/impl/MQClientAPIImpl.java
+++ b/client/src/main/java/org/apache/rocketmq/client/impl/MQClientAPIImpl.java
@@ -50,7 +50,6 @@
 import org.apache.rocketmq.client.impl.factory.MQClientInstance;
 import org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl;
 import org.apache.rocketmq.client.impl.producer.TopicPublishInfo;
-import org.apache.rocketmq.client.log.ClientLogger;
 import org.apache.rocketmq.client.producer.SendCallback;
 import org.apache.rocketmq.client.producer.SendResult;
 import org.apache.rocketmq.client.producer.SendStatus;
@@ -74,7 +73,6 @@
 import org.apache.rocketmq.common.namesrv.NameServerUpdateCallback;
 import org.apache.rocketmq.common.namesrv.TopAddressing;
 import org.apache.rocketmq.common.sysflag.PullSysFlag;
-import org.apache.rocketmq.logging.InternalLogger;
 import org.apache.rocketmq.remoting.CommandCustomHeader;
 import org.apache.rocketmq.remoting.InvokeCallback;
 import org.apache.rocketmq.remoting.RPCHook;
@@ -219,11 +217,13 @@
 import org.apache.rocketmq.remoting.protocol.subscription.SubscriptionGroupConfig;
 import org.apache.rocketmq.remoting.rpchook.DynamicalExtFieldRPCHook;
 import org.apache.rocketmq.remoting.rpchook.StreamTypeRPCHook;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 import static org.apache.rocketmq.remoting.protocol.RemotingSysResponseCode.SUCCESS;
 
 public class MQClientAPIImpl implements NameServerUpdateCallback {
-    private final static InternalLogger log = ClientLogger.getLog();
+    private final static Logger log = LoggerFactory.getLogger(MQClientAPIImpl.class);
     private static boolean sendSmartMsg =
         Boolean.parseBoolean(System.getProperty("org.apache.rocketmq.client.sendSmartMsg", "true"));
 
diff --git a/client/src/main/java/org/apache/rocketmq/client/impl/MQClientManager.java b/client/src/main/java/org/apache/rocketmq/client/impl/MQClientManager.java
index 3f4bda7..cb52180 100644
--- a/client/src/main/java/org/apache/rocketmq/client/impl/MQClientManager.java
+++ b/client/src/main/java/org/apache/rocketmq/client/impl/MQClientManager.java
@@ -21,12 +21,12 @@
 import java.util.concurrent.atomic.AtomicInteger;
 import org.apache.rocketmq.client.ClientConfig;
 import org.apache.rocketmq.client.impl.factory.MQClientInstance;
-import org.apache.rocketmq.client.log.ClientLogger;
-import org.apache.rocketmq.logging.InternalLogger;
 import org.apache.rocketmq.remoting.RPCHook;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 public class MQClientManager {
-    private final static InternalLogger log = ClientLogger.getLog();
+    private final static Logger log = LoggerFactory.getLogger(MQClientManager.class);
     private static MQClientManager instance = new MQClientManager();
     private AtomicInteger factoryIndexGenerator = new AtomicInteger();
     private ConcurrentMap<String/* clientId */, MQClientInstance> factoryTable =
diff --git a/client/src/main/java/org/apache/rocketmq/client/impl/consumer/ConsumeMessageConcurrentlyService.java b/client/src/main/java/org/apache/rocketmq/client/impl/consumer/ConsumeMessageConcurrentlyService.java
index 9dc2cbe..b7eddb2 100644
--- a/client/src/main/java/org/apache/rocketmq/client/impl/consumer/ConsumeMessageConcurrentlyService.java
+++ b/client/src/main/java/org/apache/rocketmq/client/impl/consumer/ConsumeMessageConcurrentlyService.java
@@ -35,7 +35,6 @@
 import org.apache.rocketmq.client.consumer.listener.ConsumeReturnType;
 import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently;
 import org.apache.rocketmq.client.hook.ConsumeMessageContext;
-import org.apache.rocketmq.client.log.ClientLogger;
 import org.apache.rocketmq.client.stat.ConsumerStatsManager;
 import org.apache.rocketmq.common.MixAll;
 import org.apache.rocketmq.common.ThreadFactoryImpl;
@@ -44,12 +43,13 @@
 import org.apache.rocketmq.common.message.MessageExt;
 import org.apache.rocketmq.common.message.MessageQueue;
 import org.apache.rocketmq.common.utils.ThreadUtils;
-import org.apache.rocketmq.logging.InternalLogger;
 import org.apache.rocketmq.remoting.protocol.body.CMResult;
 import org.apache.rocketmq.remoting.protocol.body.ConsumeMessageDirectlyResult;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 public class ConsumeMessageConcurrentlyService implements ConsumeMessageService {
-    private static final InternalLogger log = ClientLogger.getLog();
+    private static final Logger log = LoggerFactory.getLogger(ConsumeMessageConcurrentlyService.class);
     private final DefaultMQPushConsumerImpl defaultMQPushConsumerImpl;
     private final DefaultMQPushConsumer defaultMQPushConsumer;
     private final MessageListenerConcurrently messageListener;
diff --git a/client/src/main/java/org/apache/rocketmq/client/impl/consumer/ConsumeMessageOrderlyService.java b/client/src/main/java/org/apache/rocketmq/client/impl/consumer/ConsumeMessageOrderlyService.java
index 5750263..eb6def1 100644
--- a/client/src/main/java/org/apache/rocketmq/client/impl/consumer/ConsumeMessageOrderlyService.java
+++ b/client/src/main/java/org/apache/rocketmq/client/impl/consumer/ConsumeMessageOrderlyService.java
@@ -33,7 +33,6 @@
 import org.apache.rocketmq.client.consumer.listener.ConsumeReturnType;
 import org.apache.rocketmq.client.consumer.listener.MessageListenerOrderly;
 import org.apache.rocketmq.client.hook.ConsumeMessageContext;
-import org.apache.rocketmq.client.log.ClientLogger;
 import org.apache.rocketmq.client.stat.ConsumerStatsManager;
 import org.apache.rocketmq.common.MixAll;
 import org.apache.rocketmq.common.ThreadFactoryImpl;
@@ -44,14 +43,15 @@
 import org.apache.rocketmq.common.message.MessageExt;
 import org.apache.rocketmq.common.message.MessageQueue;
 import org.apache.rocketmq.common.utils.ThreadUtils;
-import org.apache.rocketmq.logging.InternalLogger;
 import org.apache.rocketmq.remoting.protocol.NamespaceUtil;
 import org.apache.rocketmq.remoting.protocol.body.CMResult;
 import org.apache.rocketmq.remoting.protocol.body.ConsumeMessageDirectlyResult;
 import org.apache.rocketmq.remoting.protocol.heartbeat.MessageModel;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 public class ConsumeMessageOrderlyService implements ConsumeMessageService {
-    private static final InternalLogger log = ClientLogger.getLog();
+    private static final Logger log = LoggerFactory.getLogger(ConsumeMessageOrderlyService.class);
     private final static long MAX_TIME_CONSUME_CONTINUOUSLY =
         Long.parseLong(System.getProperty("rocketmq.client.maxTimeConsumeContinuously", "60000"));
     private final DefaultMQPushConsumerImpl defaultMQPushConsumerImpl;
diff --git a/client/src/main/java/org/apache/rocketmq/client/impl/consumer/ConsumeMessagePopConcurrentlyService.java b/client/src/main/java/org/apache/rocketmq/client/impl/consumer/ConsumeMessagePopConcurrentlyService.java
index f22efc1..96c0bca 100644
--- a/client/src/main/java/org/apache/rocketmq/client/impl/consumer/ConsumeMessagePopConcurrentlyService.java
+++ b/client/src/main/java/org/apache/rocketmq/client/impl/consumer/ConsumeMessagePopConcurrentlyService.java
@@ -35,7 +35,6 @@
 import org.apache.rocketmq.client.consumer.listener.ConsumeReturnType;
 import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently;
 import org.apache.rocketmq.client.hook.ConsumeMessageContext;
-import org.apache.rocketmq.client.log.ClientLogger;
 import org.apache.rocketmq.client.stat.ConsumerStatsManager;
 import org.apache.rocketmq.common.MixAll;
 import org.apache.rocketmq.common.ThreadFactoryImpl;
@@ -45,13 +44,14 @@
 import org.apache.rocketmq.common.message.MessageExt;
 import org.apache.rocketmq.common.message.MessageQueue;
 import org.apache.rocketmq.common.utils.ThreadUtils;
-import org.apache.rocketmq.logging.InternalLogger;
 import org.apache.rocketmq.remoting.protocol.body.CMResult;
 import org.apache.rocketmq.remoting.protocol.body.ConsumeMessageDirectlyResult;
 import org.apache.rocketmq.remoting.protocol.header.ExtraInfoUtil;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 public class ConsumeMessagePopConcurrentlyService implements ConsumeMessageService {
-    private static final InternalLogger log = ClientLogger.getLog();
+    private static final Logger log = LoggerFactory.getLogger(ConsumeMessagePopConcurrentlyService.class);
     private final DefaultMQPushConsumerImpl defaultMQPushConsumerImpl;
     private final DefaultMQPushConsumer defaultMQPushConsumer;
     private final MessageListenerConcurrently messageListener;
diff --git a/client/src/main/java/org/apache/rocketmq/client/impl/consumer/ConsumeMessagePopOrderlyService.java b/client/src/main/java/org/apache/rocketmq/client/impl/consumer/ConsumeMessagePopOrderlyService.java
index bd4adc8..d84a164 100644
--- a/client/src/main/java/org/apache/rocketmq/client/impl/consumer/ConsumeMessagePopOrderlyService.java
+++ b/client/src/main/java/org/apache/rocketmq/client/impl/consumer/ConsumeMessagePopOrderlyService.java
@@ -30,7 +30,6 @@
 import org.apache.rocketmq.client.consumer.listener.ConsumeOrderlyContext;
 import org.apache.rocketmq.client.consumer.listener.ConsumeOrderlyStatus;
 import org.apache.rocketmq.client.consumer.listener.MessageListenerOrderly;
-import org.apache.rocketmq.client.log.ClientLogger;
 import org.apache.rocketmq.client.stat.ConsumerStatsManager;
 import org.apache.rocketmq.common.MixAll;
 import org.apache.rocketmq.common.ThreadFactoryImpl;
@@ -41,14 +40,15 @@
 import org.apache.rocketmq.common.message.MessageExt;
 import org.apache.rocketmq.common.message.MessageQueue;
 import org.apache.rocketmq.common.utils.ThreadUtils;
-import org.apache.rocketmq.logging.InternalLogger;
 import org.apache.rocketmq.remoting.protocol.NamespaceUtil;
 import org.apache.rocketmq.remoting.protocol.body.CMResult;
 import org.apache.rocketmq.remoting.protocol.body.ConsumeMessageDirectlyResult;
 import org.apache.rocketmq.remoting.protocol.heartbeat.MessageModel;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 public class ConsumeMessagePopOrderlyService implements ConsumeMessageService {
-    private static final InternalLogger log = ClientLogger.getLog();
+    private static final Logger log = LoggerFactory.getLogger(ConsumeMessagePopOrderlyService.class);
     private final DefaultMQPushConsumerImpl defaultMQPushConsumerImpl;
     private final DefaultMQPushConsumer defaultMQPushConsumer;
     private final MessageListenerOrderly messageListener;
diff --git a/client/src/main/java/org/apache/rocketmq/client/impl/consumer/DefaultLitePullConsumerImpl.java b/client/src/main/java/org/apache/rocketmq/client/impl/consumer/DefaultLitePullConsumerImpl.java
index f8763e0..9a6cab1 100644
--- a/client/src/main/java/org/apache/rocketmq/client/impl/consumer/DefaultLitePullConsumerImpl.java
+++ b/client/src/main/java/org/apache/rocketmq/client/impl/consumer/DefaultLitePullConsumerImpl.java
@@ -55,7 +55,6 @@
 import org.apache.rocketmq.client.impl.CommunicationMode;
 import org.apache.rocketmq.client.impl.MQClientManager;
 import org.apache.rocketmq.client.impl.factory.MQClientInstance;
-import org.apache.rocketmq.client.log.ClientLogger;
 import org.apache.rocketmq.common.MixAll;
 import org.apache.rocketmq.common.ServiceState;
 import org.apache.rocketmq.common.ThreadFactoryImpl;
@@ -65,7 +64,6 @@
 import org.apache.rocketmq.common.message.MessageExt;
 import org.apache.rocketmq.common.message.MessageQueue;
 import org.apache.rocketmq.common.sysflag.PullSysFlag;
-import org.apache.rocketmq.logging.InternalLogger;
 import org.apache.rocketmq.remoting.RPCHook;
 import org.apache.rocketmq.remoting.exception.RemotingException;
 import org.apache.rocketmq.remoting.protocol.NamespaceUtil;
@@ -74,10 +72,12 @@
 import org.apache.rocketmq.remoting.protocol.heartbeat.ConsumeType;
 import org.apache.rocketmq.remoting.protocol.heartbeat.MessageModel;
 import org.apache.rocketmq.remoting.protocol.heartbeat.SubscriptionData;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 public class DefaultLitePullConsumerImpl implements MQConsumerInner {
 
-    private final InternalLogger log = ClientLogger.getLog();
+    private static final Logger log = LoggerFactory.getLogger(DefaultLitePullConsumerImpl.class);
 
     private final long consumerStartTimestamp = System.currentTimeMillis();
 
diff --git a/client/src/main/java/org/apache/rocketmq/client/impl/consumer/DefaultMQPullConsumerImpl.java b/client/src/main/java/org/apache/rocketmq/client/impl/consumer/DefaultMQPullConsumerImpl.java
index 1b41499..b5c854a 100644
--- a/client/src/main/java/org/apache/rocketmq/client/impl/consumer/DefaultMQPullConsumerImpl.java
+++ b/client/src/main/java/org/apache/rocketmq/client/impl/consumer/DefaultMQPullConsumerImpl.java
@@ -42,7 +42,6 @@
 import org.apache.rocketmq.client.impl.CommunicationMode;
 import org.apache.rocketmq.client.impl.MQClientManager;
 import org.apache.rocketmq.client.impl.factory.MQClientInstance;
-import org.apache.rocketmq.client.log.ClientLogger;
 import org.apache.rocketmq.common.MixAll;
 import org.apache.rocketmq.common.ServiceState;
 import org.apache.rocketmq.common.UtilAll;
@@ -55,7 +54,6 @@
 import org.apache.rocketmq.common.message.MessageExt;
 import org.apache.rocketmq.common.message.MessageQueue;
 import org.apache.rocketmq.common.sysflag.PullSysFlag;
-import org.apache.rocketmq.logging.InternalLogger;
 import org.apache.rocketmq.remoting.RPCHook;
 import org.apache.rocketmq.remoting.common.RemotingHelper;
 import org.apache.rocketmq.remoting.exception.RemotingException;
@@ -65,6 +63,8 @@
 import org.apache.rocketmq.remoting.protocol.heartbeat.ConsumeType;
 import org.apache.rocketmq.remoting.protocol.heartbeat.MessageModel;
 import org.apache.rocketmq.remoting.protocol.heartbeat.SubscriptionData;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 /**
  * This class will be removed in 2022, and a better implementation {@link DefaultLitePullConsumerImpl} is recommend to use
@@ -72,7 +72,7 @@
  */
 @Deprecated
 public class DefaultMQPullConsumerImpl implements MQConsumerInner {
-    private final InternalLogger log = ClientLogger.getLog();
+    private static final Logger log = LoggerFactory.getLogger(DefaultMQPullConsumerImpl.class);
     private final DefaultMQPullConsumer defaultMQPullConsumer;
     private final long consumerStartTimestamp = System.currentTimeMillis();
     private final RPCHook rpcHook;
diff --git a/client/src/main/java/org/apache/rocketmq/client/impl/consumer/DefaultMQPushConsumerImpl.java b/client/src/main/java/org/apache/rocketmq/client/impl/consumer/DefaultMQPushConsumerImpl.java
index 53262d6..353f4de 100644
--- a/client/src/main/java/org/apache/rocketmq/client/impl/consumer/DefaultMQPushConsumerImpl.java
+++ b/client/src/main/java/org/apache/rocketmq/client/impl/consumer/DefaultMQPushConsumerImpl.java
@@ -58,7 +58,6 @@
 import org.apache.rocketmq.client.impl.FindBrokerResult;
 import org.apache.rocketmq.client.impl.MQClientManager;
 import org.apache.rocketmq.client.impl.factory.MQClientInstance;
-import org.apache.rocketmq.client.log.ClientLogger;
 import org.apache.rocketmq.client.stat.ConsumerStatsManager;
 import org.apache.rocketmq.common.KeyBuilder;
 import org.apache.rocketmq.common.MixAll;
@@ -72,7 +71,6 @@
 import org.apache.rocketmq.common.message.MessageExt;
 import org.apache.rocketmq.common.message.MessageQueue;
 import org.apache.rocketmq.common.sysflag.PullSysFlag;
-import org.apache.rocketmq.logging.InternalLogger;
 import org.apache.rocketmq.remoting.RPCHook;
 import org.apache.rocketmq.remoting.common.RemotingHelper;
 import org.apache.rocketmq.remoting.exception.RemotingException;
@@ -92,7 +90,8 @@
 import org.apache.rocketmq.remoting.protocol.heartbeat.SubscriptionData;
 import org.apache.rocketmq.remoting.protocol.route.BrokerData;
 import org.apache.rocketmq.remoting.protocol.route.TopicRouteData;
-
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 public class DefaultMQPushConsumerImpl implements MQConsumerInner {
     /**
@@ -109,7 +108,7 @@
     private static final long PULL_TIME_DELAY_MILLS_WHEN_SUSPEND = 1000;
     private static final long BROKER_SUSPEND_MAX_TIME_MILLIS = 1000 * 15;
     private static final long CONSUMER_TIMEOUT_MILLIS_WHEN_SUSPEND = 1000 * 30;
-    private final InternalLogger log = ClientLogger.getLog();
+    private static final Logger log = LoggerFactory.getLogger(DefaultMQPushConsumerImpl.class);
     private final DefaultMQPushConsumer defaultMQPushConsumer;
     private final RebalanceImpl rebalanceImpl = new RebalancePushImpl(this);
     private final ArrayList<FilterMessageHook> filterMessageHookList = new ArrayList<>();
diff --git a/client/src/main/java/org/apache/rocketmq/client/impl/consumer/ProcessQueue.java b/client/src/main/java/org/apache/rocketmq/client/impl/consumer/ProcessQueue.java
index da28325..7857d4a 100644
--- a/client/src/main/java/org/apache/rocketmq/client/impl/consumer/ProcessQueue.java
+++ b/client/src/main/java/org/apache/rocketmq/client/impl/consumer/ProcessQueue.java
@@ -28,12 +28,12 @@
 import java.util.concurrent.locks.ReentrantReadWriteLock;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer;
-import org.apache.rocketmq.client.log.ClientLogger;
 import org.apache.rocketmq.common.message.MessageAccessor;
 import org.apache.rocketmq.common.message.MessageConst;
 import org.apache.rocketmq.common.message.MessageExt;
-import org.apache.rocketmq.logging.InternalLogger;
 import org.apache.rocketmq.remoting.protocol.body.ProcessQueueInfo;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 /**
  * Queue consumption snapshot
@@ -43,7 +43,7 @@
         Long.parseLong(System.getProperty("rocketmq.client.rebalance.lockMaxLiveTime", "30000"));
     public final static long REBALANCE_LOCK_INTERVAL = Long.parseLong(System.getProperty("rocketmq.client.rebalance.lockInterval", "20000"));
     private final static long PULL_MAX_IDLE_TIME = Long.parseLong(System.getProperty("rocketmq.client.pull.pullMaxIdleTime", "120000"));
-    private final InternalLogger log = ClientLogger.getLog();
+    private final Logger log = LoggerFactory.getLogger(ProcessQueue.class);
     private final ReadWriteLock treeMapLock = new ReentrantReadWriteLock();
     private final TreeMap<Long, MessageExt> msgTreeMap = new TreeMap<>();
     private final AtomicLong msgCount = new AtomicLong();
diff --git a/client/src/main/java/org/apache/rocketmq/client/impl/consumer/PullAPIWrapper.java b/client/src/main/java/org/apache/rocketmq/client/impl/consumer/PullAPIWrapper.java
index dd7b9af..a4fbf36 100644
--- a/client/src/main/java/org/apache/rocketmq/client/impl/consumer/PullAPIWrapper.java
+++ b/client/src/main/java/org/apache/rocketmq/client/impl/consumer/PullAPIWrapper.java
@@ -34,7 +34,6 @@
 import org.apache.rocketmq.client.impl.CommunicationMode;
 import org.apache.rocketmq.client.impl.FindBrokerResult;
 import org.apache.rocketmq.client.impl.factory.MQClientInstance;
-import org.apache.rocketmq.client.log.ClientLogger;
 import org.apache.rocketmq.common.MQVersion;
 import org.apache.rocketmq.common.MixAll;
 import org.apache.rocketmq.common.filter.ExpressionType;
@@ -45,15 +44,16 @@
 import org.apache.rocketmq.common.message.MessageQueue;
 import org.apache.rocketmq.common.sysflag.MessageSysFlag;
 import org.apache.rocketmq.common.sysflag.PullSysFlag;
-import org.apache.rocketmq.logging.InternalLogger;
 import org.apache.rocketmq.remoting.exception.RemotingException;
 import org.apache.rocketmq.remoting.protocol.header.PopMessageRequestHeader;
 import org.apache.rocketmq.remoting.protocol.header.PullMessageRequestHeader;
 import org.apache.rocketmq.remoting.protocol.heartbeat.SubscriptionData;
 import org.apache.rocketmq.remoting.protocol.route.TopicRouteData;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 public class PullAPIWrapper {
-    private final InternalLogger log = ClientLogger.getLog();
+    private static final Logger log = LoggerFactory.getLogger(PullAPIWrapper.class);
     private final MQClientInstance mQClientFactory;
     private final String consumerGroup;
     private final boolean unitMode;
diff --git a/client/src/main/java/org/apache/rocketmq/client/impl/consumer/PullMessageService.java b/client/src/main/java/org/apache/rocketmq/client/impl/consumer/PullMessageService.java
index a5f3379..5adb366 100644
--- a/client/src/main/java/org/apache/rocketmq/client/impl/consumer/PullMessageService.java
+++ b/client/src/main/java/org/apache/rocketmq/client/impl/consumer/PullMessageService.java
@@ -22,14 +22,14 @@
 import java.util.concurrent.ThreadFactory;
 import java.util.concurrent.TimeUnit;
 import org.apache.rocketmq.client.impl.factory.MQClientInstance;
-import org.apache.rocketmq.client.log.ClientLogger;
 import org.apache.rocketmq.common.ServiceThread;
 import org.apache.rocketmq.common.message.MessageRequestMode;
 import org.apache.rocketmq.common.utils.ThreadUtils;
-import org.apache.rocketmq.logging.InternalLogger;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 public class PullMessageService extends ServiceThread {
-    private final InternalLogger log = ClientLogger.getLog();
+    private final Logger logger = LoggerFactory.getLogger(PullMessageService.class);
     private final LinkedBlockingQueue<MessageRequest> messageRequestQueue = new LinkedBlockingQueue<>();
 
     private final MQClientInstance mQClientFactory;
@@ -54,7 +54,7 @@
                 }
             }, timeDelay, TimeUnit.MILLISECONDS);
         } else {
-            log.warn("PullMessageServiceScheduledThread has shutdown");
+            logger.warn("PullMessageServiceScheduledThread has shutdown");
         }
     }
 
@@ -62,7 +62,7 @@
         try {
             this.messageRequestQueue.put(pullRequest);
         } catch (InterruptedException e) {
-            log.error("executePullRequestImmediately pullRequestQueue.put", e);
+            logger.error("executePullRequestImmediately pullRequestQueue.put", e);
         }
     }
 
@@ -75,7 +75,7 @@
                 }
             }, timeDelay, TimeUnit.MILLISECONDS);
         } else {
-            log.warn("PullMessageServiceScheduledThread has shutdown");
+            logger.warn("PullMessageServiceScheduledThread has shutdown");
         }
     }
 
@@ -83,7 +83,7 @@
         try {
             this.messageRequestQueue.put(pullRequest);
         } catch (InterruptedException e) {
-            log.error("executePullRequestImmediately pullRequestQueue.put", e);
+            logger.error("executePullRequestImmediately pullRequestQueue.put", e);
         }
     }
 
@@ -91,7 +91,7 @@
         if (!isStopped()) {
             this.scheduledExecutorService.schedule(r, timeDelay, TimeUnit.MILLISECONDS);
         } else {
-            log.warn("PullMessageServiceScheduledThread has shutdown");
+            logger.warn("PullMessageServiceScheduledThread has shutdown");
         }
     }
 
@@ -105,7 +105,7 @@
             DefaultMQPushConsumerImpl impl = (DefaultMQPushConsumerImpl) consumer;
             impl.pullMessage(pullRequest);
         } else {
-            log.warn("No matched consumer for the PullRequest {}, drop it", pullRequest);
+            logger.warn("No matched consumer for the PullRequest {}, drop it", pullRequest);
         }
     }
 
@@ -115,13 +115,13 @@
             DefaultMQPushConsumerImpl impl = (DefaultMQPushConsumerImpl) consumer;
             impl.popMessage(popRequest);
         } else {
-            log.warn("No matched consumer for the PopRequest {}, drop it", popRequest);
+            logger.warn("No matched consumer for the PopRequest {}, drop it", popRequest);
         }
     }
 
     @Override
     public void run() {
-        log.info(this.getServiceName() + " service started");
+        logger.info(this.getServiceName() + " service started");
 
         while (!this.isStopped()) {
             try {
@@ -133,11 +133,11 @@
                 }
             } catch (InterruptedException ignored) {
             } catch (Exception e) {
-                log.error("Pull Message Service Run Method exception", e);
+                logger.error("Pull Message Service Run Method exception", e);
             }
         }
 
-        log.info(this.getServiceName() + " service end");
+        logger.info(this.getServiceName() + " service end");
     }
 
     @Override
diff --git a/client/src/main/java/org/apache/rocketmq/client/impl/consumer/RebalanceImpl.java b/client/src/main/java/org/apache/rocketmq/client/impl/consumer/RebalanceImpl.java
index 45a2521..0c91eaa 100644
--- a/client/src/main/java/org/apache/rocketmq/client/impl/consumer/RebalanceImpl.java
+++ b/client/src/main/java/org/apache/rocketmq/client/impl/consumer/RebalanceImpl.java
@@ -31,13 +31,11 @@
 import org.apache.rocketmq.client.exception.MQClientException;
 import org.apache.rocketmq.client.impl.FindBrokerResult;
 import org.apache.rocketmq.client.impl.factory.MQClientInstance;
-import org.apache.rocketmq.client.log.ClientLogger;
 import org.apache.rocketmq.common.KeyBuilder;
 import org.apache.rocketmq.common.MixAll;
 import org.apache.rocketmq.common.message.MessageQueue;
 import org.apache.rocketmq.common.message.MessageQueueAssignment;
 import org.apache.rocketmq.common.message.MessageRequestMode;
-import org.apache.rocketmq.logging.InternalLogger;
 import org.apache.rocketmq.remoting.exception.RemotingTimeoutException;
 import org.apache.rocketmq.remoting.protocol.body.LockBatchRequestBody;
 import org.apache.rocketmq.remoting.protocol.body.UnlockBatchRequestBody;
@@ -45,9 +43,11 @@
 import org.apache.rocketmq.remoting.protocol.heartbeat.ConsumeType;
 import org.apache.rocketmq.remoting.protocol.heartbeat.MessageModel;
 import org.apache.rocketmq.remoting.protocol.heartbeat.SubscriptionData;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 public abstract class RebalanceImpl {
-    protected static final InternalLogger log = ClientLogger.getLog();
+    protected static final Logger log = LoggerFactory.getLogger(RebalanceImpl.class);
 
     protected final ConcurrentMap<MessageQueue, ProcessQueue> processQueueTable = new ConcurrentHashMap<>(64);
     protected final ConcurrentMap<MessageQueue, PopProcessQueue> popProcessQueueTable = new ConcurrentHashMap<>(64);
diff --git a/client/src/main/java/org/apache/rocketmq/client/impl/consumer/RebalanceService.java b/client/src/main/java/org/apache/rocketmq/client/impl/consumer/RebalanceService.java
index c8f8ab1..394381f 100644
--- a/client/src/main/java/org/apache/rocketmq/client/impl/consumer/RebalanceService.java
+++ b/client/src/main/java/org/apache/rocketmq/client/impl/consumer/RebalanceService.java
@@ -17,15 +17,15 @@
 package org.apache.rocketmq.client.impl.consumer;
 
 import org.apache.rocketmq.client.impl.factory.MQClientInstance;
-import org.apache.rocketmq.client.log.ClientLogger;
 import org.apache.rocketmq.common.ServiceThread;
-import org.apache.rocketmq.logging.InternalLogger;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 public class RebalanceService extends ServiceThread {
     private static long waitInterval =
         Long.parseLong(System.getProperty(
             "rocketmq.client.rebalance.waitInterval", "20000"));
-    private final InternalLogger log = ClientLogger.getLog();
+    private final Logger log = LoggerFactory.getLogger(RebalanceService.class);
     private final MQClientInstance mqClientFactory;
 
     public RebalanceService(MQClientInstance mqClientFactory) {
diff --git a/client/src/main/java/org/apache/rocketmq/client/impl/factory/MQClientInstance.java b/client/src/main/java/org/apache/rocketmq/client/impl/factory/MQClientInstance.java
index beb2204..843134c 100644
--- a/client/src/main/java/org/apache/rocketmq/client/impl/factory/MQClientInstance.java
+++ b/client/src/main/java/org/apache/rocketmq/client/impl/factory/MQClientInstance.java
@@ -52,7 +52,6 @@
 import org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl;
 import org.apache.rocketmq.client.impl.producer.MQProducerInner;
 import org.apache.rocketmq.client.impl.producer.TopicPublishInfo;
-import org.apache.rocketmq.client.log.ClientLogger;
 import org.apache.rocketmq.client.producer.DefaultMQProducer;
 import org.apache.rocketmq.client.stat.ConsumerStatsManager;
 import org.apache.rocketmq.common.MQVersion;
@@ -65,7 +64,6 @@
 import org.apache.rocketmq.common.message.MessageQueue;
 import org.apache.rocketmq.common.message.MessageQueueAssignment;
 import org.apache.rocketmq.common.topic.TopicValidator;
-import org.apache.rocketmq.logging.InternalLogger;
 import org.apache.rocketmq.remoting.RPCHook;
 import org.apache.rocketmq.remoting.exception.RemotingException;
 import org.apache.rocketmq.remoting.netty.NettyClientConfig;
@@ -82,12 +80,14 @@
 import org.apache.rocketmq.remoting.protocol.route.BrokerData;
 import org.apache.rocketmq.remoting.protocol.route.QueueData;
 import org.apache.rocketmq.remoting.protocol.route.TopicRouteData;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 import static org.apache.rocketmq.remoting.rpc.ClientMetadata.topicRouteData2EndpointsForStaticTopic;
 
 public class MQClientInstance {
     private final static long LOCK_TIMEOUT_MILLIS = 3000;
-    private final static InternalLogger log = ClientLogger.getLog();
+    private final static Logger log = LoggerFactory.getLogger(MQClientInstance.class);
     private final ClientConfig clientConfig;
     private final String clientId;
     private final long bootTimestamp = System.currentTimeMillis();
diff --git a/client/src/main/java/org/apache/rocketmq/client/impl/producer/DefaultMQProducerImpl.java b/client/src/main/java/org/apache/rocketmq/client/impl/producer/DefaultMQProducerImpl.java
index 8c669ac..a867297 100644
--- a/client/src/main/java/org/apache/rocketmq/client/impl/producer/DefaultMQProducerImpl.java
+++ b/client/src/main/java/org/apache/rocketmq/client/impl/producer/DefaultMQProducerImpl.java
@@ -51,7 +51,6 @@
 import org.apache.rocketmq.client.impl.MQClientManager;
 import org.apache.rocketmq.client.impl.factory.MQClientInstance;
 import org.apache.rocketmq.client.latency.MQFaultStrategy;
-import org.apache.rocketmq.client.log.ClientLogger;
 import org.apache.rocketmq.client.producer.DefaultMQProducer;
 import org.apache.rocketmq.client.producer.LocalTransactionExecuter;
 import org.apache.rocketmq.client.producer.LocalTransactionState;
@@ -85,7 +84,6 @@
 import org.apache.rocketmq.common.message.MessageType;
 import org.apache.rocketmq.common.sysflag.MessageSysFlag;
 import org.apache.rocketmq.common.utils.CorrelationIdUtil;
-import org.apache.rocketmq.logging.InternalLogger;
 import org.apache.rocketmq.remoting.RPCHook;
 import org.apache.rocketmq.remoting.exception.RemotingConnectException;
 import org.apache.rocketmq.remoting.exception.RemotingException;
@@ -95,10 +93,12 @@
 import org.apache.rocketmq.remoting.protocol.header.CheckTransactionStateRequestHeader;
 import org.apache.rocketmq.remoting.protocol.header.EndTransactionRequestHeader;
 import org.apache.rocketmq.remoting.protocol.header.SendMessageRequestHeader;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 public class DefaultMQProducerImpl implements MQProducerInner {
 
-    private final InternalLogger log = ClientLogger.getLog();
+    private final Logger log = LoggerFactory.getLogger(DefaultMQProducerImpl.class);
     private final Random random = new Random();
     private final DefaultMQProducer defaultMQProducer;
     private final ConcurrentMap<String/* topic */, TopicPublishInfo> topicPublishInfoTable =
diff --git a/client/src/main/java/org/apache/rocketmq/client/latency/MQFaultStrategy.java b/client/src/main/java/org/apache/rocketmq/client/latency/MQFaultStrategy.java
index a8c7b07..c4ca85e 100644
--- a/client/src/main/java/org/apache/rocketmq/client/latency/MQFaultStrategy.java
+++ b/client/src/main/java/org/apache/rocketmq/client/latency/MQFaultStrategy.java
@@ -18,12 +18,12 @@
 package org.apache.rocketmq.client.latency;
 
 import org.apache.rocketmq.client.impl.producer.TopicPublishInfo;
-import org.apache.rocketmq.client.log.ClientLogger;
 import org.apache.rocketmq.common.message.MessageQueue;
-import org.apache.rocketmq.logging.InternalLogger;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 public class MQFaultStrategy {
-    private final static InternalLogger log = ClientLogger.getLog();
+    private final static Logger log = LoggerFactory.getLogger(MQFaultStrategy.class);
     private final LatencyFaultTolerance<String> latencyFaultTolerance = new LatencyFaultToleranceImpl();
 
     private boolean sendLatencyFaultEnable = false;
diff --git a/client/src/main/java/org/apache/rocketmq/client/log/ClientLogger.java b/client/src/main/java/org/apache/rocketmq/client/log/ClientLogger.java
deleted file mode 100644
index 7ee2eba..0000000
--- a/client/src/main/java/org/apache/rocketmq/client/log/ClientLogger.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.rocketmq.client.log;
-
-import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InnerLoggerFactory;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
-import org.apache.rocketmq.logging.inner.Appender;
-import org.apache.rocketmq.logging.inner.Layout;
-import org.apache.rocketmq.logging.inner.Level;
-import org.apache.rocketmq.logging.inner.Logger;
-import org.apache.rocketmq.logging.inner.LoggingBuilder;
-import org.apache.rocketmq.logging.inner.LoggingEvent;
-import org.apache.rocketmq.remoting.common.RemotingHelper;
-
-public class ClientLogger {
-
-    public static final String CLIENT_LOG_USESLF4J = "rocketmq.client.logUseSlf4j";
-    public static final String CLIENT_LOG_ROOT = "rocketmq.client.logRoot";
-    public static final String CLIENT_LOG_MAXINDEX = "rocketmq.client.logFileMaxIndex";
-    public static final String CLIENT_LOG_FILESIZE = "rocketmq.client.logFileMaxSize";
-    public static final String CLIENT_LOG_LEVEL = "rocketmq.client.logLevel";
-    public static final String CLIENT_LOG_ADDITIVE = "rocketmq.client.log.additive";
-    public static final String CLIENT_LOG_FILENAME = "rocketmq.client.logFileName";
-    public static final String CLIENT_LOG_ASYNC_QUEUESIZE = "rocketmq.client.logAsyncQueueSize";
-    public static final String ROCKETMQ_CLIENT_APPENDER_NAME = "RocketmqClientAppender";
-
-    private static final InternalLogger CLIENT_LOGGER;
-
-    private static final boolean CLIENT_USE_SLF4J;
-
-    private static Appender appenderProxy = new AppenderProxy();
-
-    //private static Appender rocketmqClientAppender = null;
-
-    static {
-        CLIENT_USE_SLF4J = Boolean.parseBoolean(System.getProperty(CLIENT_LOG_USESLF4J, "false"));
-        if (!CLIENT_USE_SLF4J) {
-            InternalLoggerFactory.setCurrentLoggerType(InnerLoggerFactory.LOGGER_INNER);
-            CLIENT_LOGGER = createLogger(LoggerName.CLIENT_LOGGER_NAME);
-            createLogger(LoggerName.COMMON_LOGGER_NAME);
-            createLogger(RemotingHelper.ROCKETMQ_REMOTING);
-            Logger.getRootLogger().addAppender(appenderProxy);
-        } else {
-            CLIENT_LOGGER = InternalLoggerFactory.getLogger(LoggerName.CLIENT_LOGGER_NAME);
-        }
-    }
-
-    private static synchronized Appender createClientAppender() {
-        String clientLogRoot = System.getProperty(CLIENT_LOG_ROOT, System.getProperty("user.home") + "/logs/rocketmqlogs");
-        String clientLogMaxIndex = System.getProperty(CLIENT_LOG_MAXINDEX, "10");
-        String clientLogFileName = System.getProperty(CLIENT_LOG_FILENAME, "rocketmq_client.log");
-        String maxFileSize = System.getProperty(CLIENT_LOG_FILESIZE, "1073741824");
-        String asyncQueueSize = System.getProperty(CLIENT_LOG_ASYNC_QUEUESIZE, "1024");
-
-        String logFileName = clientLogRoot + "/" + clientLogFileName;
-
-        int maxFileIndex = Integer.parseInt(clientLogMaxIndex);
-        int queueSize = Integer.parseInt(asyncQueueSize);
-
-        Layout layout = LoggingBuilder.newLayoutBuilder().withDefaultLayout().build();
-
-        Appender rocketmqClientAppender = LoggingBuilder.newAppenderBuilder()
-            .withRollingFileAppender(logFileName, maxFileSize, maxFileIndex)
-            .withAsync(false, queueSize).withName(ROCKETMQ_CLIENT_APPENDER_NAME).withLayout(layout).build();
-
-        return rocketmqClientAppender;
-    }
-
-    private static InternalLogger createLogger(final String loggerName) {
-        String clientLogLevel = System.getProperty(CLIENT_LOG_LEVEL, "INFO");
-        boolean additive = "true".equalsIgnoreCase(System.getProperty(CLIENT_LOG_ADDITIVE));
-        InternalLogger logger = InternalLoggerFactory.getLogger(loggerName);
-        InnerLoggerFactory.InnerLogger innerLogger = (InnerLoggerFactory.InnerLogger) logger;
-        Logger realLogger = innerLogger.getLogger();
-
-        //if (rocketmqClientAppender == null) {
-        //   createClientAppender();
-        //}
-
-        realLogger.addAppender(appenderProxy);
-        realLogger.setLevel(Level.toLevel(clientLogLevel));
-        realLogger.setAdditivity(additive);
-        return logger;
-    }
-
-    public static InternalLogger getLog() {
-        return CLIENT_LOGGER;
-    }
-
-    static class AppenderProxy extends Appender {
-        private Appender proxy;
-
-        @Override
-        protected void append(LoggingEvent event) {
-            if (null == proxy) {
-                proxy = ClientLogger.createClientAppender();
-            }
-            proxy.doAppend(event);
-        }
-
-        @Override
-        public void close() {
-            if (null != proxy) {
-                proxy.close();
-            }
-        }
-    }
-}
diff --git a/client/src/main/java/org/apache/rocketmq/client/producer/DefaultMQProducer.java b/client/src/main/java/org/apache/rocketmq/client/producer/DefaultMQProducer.java
index a311f86..cb91fe4 100644
--- a/client/src/main/java/org/apache/rocketmq/client/producer/DefaultMQProducer.java
+++ b/client/src/main/java/org/apache/rocketmq/client/producer/DefaultMQProducer.java
@@ -30,7 +30,6 @@
 import org.apache.rocketmq.client.exception.MQClientException;
 import org.apache.rocketmq.client.exception.RequestTimeoutException;
 import org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl;
-import org.apache.rocketmq.client.log.ClientLogger;
 import org.apache.rocketmq.client.trace.AsyncTraceDispatcher;
 import org.apache.rocketmq.client.trace.TraceDispatcher;
 import org.apache.rocketmq.client.trace.hook.EndTransactionTraceHookImpl;
@@ -42,10 +41,11 @@
 import org.apache.rocketmq.common.message.MessageExt;
 import org.apache.rocketmq.common.message.MessageQueue;
 import org.apache.rocketmq.common.topic.TopicValidator;
-import org.apache.rocketmq.logging.InternalLogger;
 import org.apache.rocketmq.remoting.RPCHook;
 import org.apache.rocketmq.remoting.exception.RemotingException;
 import org.apache.rocketmq.remoting.protocol.ResponseCode;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 /**
  * This class is the entry point for applications intending to send messages. </p>
@@ -65,7 +65,7 @@
      * Wrapping internal implementations for virtually all methods presented in this class.
      */
     protected final transient DefaultMQProducerImpl defaultMQProducerImpl;
-    private final InternalLogger log = ClientLogger.getLog();
+    private final Logger logger = LoggerFactory.getLogger(DefaultMQProducer.class);
     private final Set<Integer> retryResponseCodes = new CopyOnWriteArraySet<>(Arrays.asList(
         ResponseCode.TOPIC_NOT_EXIST,
         ResponseCode.SERVICE_NOT_AVAILABLE,
@@ -272,7 +272,7 @@
                 this.defaultMQProducerImpl.registerEndTransactionHook(
                     new EndTransactionTraceHookImpl(traceDispatcher));
             } catch (Throwable e) {
-                log.error("system mqtrace hook init failed ,maybe can't send msg trace data");
+                logger.error("system mqtrace hook init failed ,maybe can't send msg trace data");
             }
         }
     }
@@ -301,7 +301,7 @@
             try {
                 traceDispatcher.start(this.getNamesrvAddr(), this.getAccessChannel());
             } catch (MQClientException e) {
-                log.warn("trace dispatcher start failed ", e);
+                logger.warn("trace dispatcher start failed ", e);
             }
         }
     }
diff --git a/client/src/main/java/org/apache/rocketmq/client/producer/RequestFutureHolder.java b/client/src/main/java/org/apache/rocketmq/client/producer/RequestFutureHolder.java
index 100890d..0a89d54 100644
--- a/client/src/main/java/org/apache/rocketmq/client/producer/RequestFutureHolder.java
+++ b/client/src/main/java/org/apache/rocketmq/client/producer/RequestFutureHolder.java
@@ -31,12 +31,12 @@
 import org.apache.rocketmq.client.common.ClientErrorCode;
 import org.apache.rocketmq.client.exception.RequestTimeoutException;
 import org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl;
-import org.apache.rocketmq.client.log.ClientLogger;
 import org.apache.rocketmq.common.ThreadFactoryImpl;
-import org.apache.rocketmq.logging.InternalLogger;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 public class RequestFutureHolder {
-    private static InternalLogger log = ClientLogger.getLog();
+    private static final Logger log = LoggerFactory.getLogger(RequestFutureHolder.class);
     private static final RequestFutureHolder INSTANCE = new RequestFutureHolder();
     private ConcurrentHashMap<String, RequestResponseFuture> requestFutureTable = new ConcurrentHashMap<>();
     private final Set<DefaultMQProducerImpl> producerSet = new HashSet<>();
diff --git a/client/src/main/java/org/apache/rocketmq/client/stat/ConsumerStatsManager.java b/client/src/main/java/org/apache/rocketmq/client/stat/ConsumerStatsManager.java
index 5c87fb0..9d50409 100644
--- a/client/src/main/java/org/apache/rocketmq/client/stat/ConsumerStatsManager.java
+++ b/client/src/main/java/org/apache/rocketmq/client/stat/ConsumerStatsManager.java
@@ -18,14 +18,14 @@
 package org.apache.rocketmq.client.stat;
 
 import java.util.concurrent.ScheduledExecutorService;
-import org.apache.rocketmq.client.log.ClientLogger;
 import org.apache.rocketmq.common.stats.StatsItemSet;
 import org.apache.rocketmq.common.stats.StatsSnapshot;
-import org.apache.rocketmq.logging.InternalLogger;
 import org.apache.rocketmq.remoting.protocol.body.ConsumeStatus;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 public class ConsumerStatsManager {
-    private static final InternalLogger log = ClientLogger.getLog();
+    private static final Logger log = LoggerFactory.getLogger(ConsumerStatsManager.class);
 
     private static final String TOPIC_AND_GROUP_CONSUME_OK_TPS = "CONSUME_OK_TPS";
     private static final String TOPIC_AND_GROUP_CONSUME_FAILED_TPS = "CONSUME_FAILED_TPS";
diff --git a/client/src/main/java/org/apache/rocketmq/client/trace/AsyncTraceDispatcher.java b/client/src/main/java/org/apache/rocketmq/client/trace/AsyncTraceDispatcher.java
index 67b8a8a..0da760c 100644
--- a/client/src/main/java/org/apache/rocketmq/client/trace/AsyncTraceDispatcher.java
+++ b/client/src/main/java/org/apache/rocketmq/client/trace/AsyncTraceDispatcher.java
@@ -35,7 +35,6 @@
 import org.apache.rocketmq.client.impl.consumer.DefaultMQPushConsumerImpl;
 import org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl;
 import org.apache.rocketmq.client.impl.producer.TopicPublishInfo;
-import org.apache.rocketmq.client.log.ClientLogger;
 import org.apache.rocketmq.client.producer.DefaultMQProducer;
 import org.apache.rocketmq.client.producer.MessageQueueSelector;
 import org.apache.rocketmq.client.producer.SendCallback;
@@ -45,14 +44,14 @@
 import org.apache.rocketmq.common.message.Message;
 import org.apache.rocketmq.common.message.MessageQueue;
 import org.apache.rocketmq.common.topic.TopicValidator;
-import org.apache.rocketmq.logging.InternalLogger;
 import org.apache.rocketmq.remoting.RPCHook;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 import static org.apache.rocketmq.client.trace.TraceConstants.TRACE_INSTANCE_NAME;
 
 public class AsyncTraceDispatcher implements TraceDispatcher {
-
-    private final static InternalLogger log = ClientLogger.getLog();
+    private final static Logger log = LoggerFactory.getLogger(AsyncTraceDispatcher.class);
     private final static AtomicInteger COUNTER = new AtomicInteger();
     private final int queueSize;
     private final int batchSize;
diff --git a/client/src/main/resources/rmq.client.logback.xml b/client/src/main/resources/rmq.client.logback.xml
new file mode 100644
index 0000000..5d398b4
--- /dev/null
+++ b/client/src/main/resources/rmq.client.logback.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+      http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  -->
+
+<configuration debug="false">
+    <conversionRule conversionWord="pid" converterClass="io.github.aliyunmq.logback.extensions.ProcessIdConverter"/>
+    <appender name="CustomConsoleAppender" class="io.github.aliyunmq.logback.extensions.CustomConsoleAppender">
+        <encoder>
+            <pattern>%yellow(%d{yyy-MM-dd HH:mm:ss.SSS,GMT+8}) %highlight(%-5p) %boldWhite([%pid]) %magenta([%t]) %boldGreen([%logger{12}#%M:%L]) - %m%n
+            </pattern>
+            <charset class="java.nio.charset.Charset">UTF-8</charset>
+        </encoder>
+    </appender>
+    <appender name="DefaultAppender" class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.RollingFileAppender">
+        <append>true</append>
+        <File>
+            ${rocketmq.log.root:-${user.home}${file.separator}logs${file.separator}rocketmqlogs}${file.separator}rocketmq_client.log
+        </File>
+        <rollingPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+            <FileNamePattern>
+                ${rocketmq.log.root:-${user.home}${file.separator}logs${file.separator}rocketmqlogs}${file.separator}other_days${file.separator}rocketmq_client-%i.log.gz
+            </FileNamePattern>
+            <minIndex>1</minIndex>
+            <maxIndex>${rocketmq.log.file.maxIndex:-10}</maxIndex>
+        </rollingPolicy>
+        <triggeringPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+            <maxFileSize>64MB</maxFileSize>
+        </triggeringPolicy>
+        <encoder class="org.apache.rocketmq.shade.ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+            <pattern>%d{yyy-MM-dd HH:mm:ss.SSS,GMT+8} %-5p [%pid] [%t] [%logger{12}#%M:%L] - %m%n</pattern>
+            <charset class="java.nio.charset.Charset">UTF-8</charset>
+        </encoder>
+    </appender>
+    <root level="${rocketmq.log.level:-info}">
+        <appender-ref ref="CustomConsoleAppender"/>
+        <appender-ref ref="DefaultAppender" additivity="false"/>
+    </root>
+    <!-- ref: https://github.com/grpc/grpc-java/issues/3033 -->
+    <!-- <logger name="io.grpc" level="warn"/> -->
+</configuration>
\ No newline at end of file
diff --git a/client/src/test/resources/log4j2.xml b/client/src/test/resources/log4j2.xml
deleted file mode 100644
index 52cf2a8..0000000
--- a/client/src/test/resources/log4j2.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one or more
-  ~ contributor license agreements.  See the NOTICE file distributed with
-  ~ this work for additional information regarding copyright ownership.
-  ~ The ASF licenses this file to You under the Apache License, Version 2.0
-  ~ (the "License"); you may not use this file except in compliance with
-  ~ the License.  You may obtain a copy of the License at
-  ~
-  ~     http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-<Configuration status="WARN">
-    <Appenders>
-        <Console name="Console" target="SYSTEM_OUT">
-            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
-        </Console>
-    </Appenders>
-    <Loggers>
-        <Root level="ERROR">
-            <AppenderRef ref="Console"/>
-        </Root>
-    </Loggers>
-</Configuration>
\ No newline at end of file
diff --git a/store/src/test/resources/logback-test.xml b/client/src/test/resources/rmq.logback-test.xml
similarity index 64%
copy from store/src/test/resources/logback-test.xml
copy to client/src/test/resources/rmq.logback-test.xml
index a033816..c3ec0d1 100644
--- a/store/src/test/resources/logback-test.xml
+++ b/client/src/test/resources/rmq.logback-test.xml
@@ -17,19 +17,20 @@
   -->
 <configuration>
 
-    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
-        <encoder>
-            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n</pattern>
-            <charset class="java.nio.charset.Charset">UTF-8</charset>
-        </encoder>
+    <appender name="CONSOLE" class="org.apache.rocketmq.shade.ch.qos.logback.core.ConsoleAppender">
+        <layout class="org.apache.rocketmq.shade.ch.qos.logback.classic.PatternLayout">
+            <Pattern>
+                %d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n
+            </Pattern>
+        </layout>
     </appender>
 
-    <logger name="org.apache.rocketmq.store" level="WARN" additivity="false">
-        <appender-ref ref="STDOUT"/>
+    <logger name="org.apache.rocketmq" level="error" additivity="false">
+        <appender-ref ref="CONSOLE"/>
     </logger>
 
-    <root level="OFF">
-        <appender-ref ref="STDOUT"/>
+    <root level="error">
+        <appender-ref ref="CONSOLE"/>
     </root>
 
-</configuration>
+</configuration>
\ No newline at end of file
diff --git a/common/BUILD.bazel b/common/BUILD.bazel
index 8370023..f85bda7 100644
--- a/common/BUILD.bazel
+++ b/common/BUILD.bazel
@@ -21,7 +21,6 @@
     srcs = glob(["src/main/java/**/*.java"]),
     visibility = ["//visibility:public"],
     deps = [
-        "//logging",
         "@maven//:com_alibaba_fastjson",
         "@maven//:com_github_luben_zstd_jni",
         "@maven//:com_google_guava_guava",
@@ -38,6 +37,7 @@
         "@maven//:io_opentelemetry_opentelemetry_sdk_metrics",
         "@maven//:org_apache_commons_commons_lang3",
         "@maven//:org_lz4_lz4_java",
+        "@maven//:io_github_aliyun_mq_rocketmq_slf4j_api",
     ],
 )
 
diff --git a/common/pom.xml b/common/pom.xml
index 250b258..c62f863 100644
--- a/common/pom.xml
+++ b/common/pom.xml
@@ -33,10 +33,6 @@
 
     <dependencies>
         <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>rocketmq-logging</artifactId>
-        </dependency>
-        <dependency>
             <groupId>com.alibaba</groupId>
             <artifactId>fastjson</artifactId>
         </dependency>
@@ -65,11 +61,6 @@
             <artifactId>guava</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-api</artifactId>
-            <version>1.7.7</version>
-        </dependency>
-        <dependency>
             <groupId>commons-codec</groupId>
             <artifactId>commons-codec</artifactId>
         </dependency>
@@ -101,5 +92,13 @@
             <groupId>javax.annotation</groupId>
             <artifactId>javax.annotation-api</artifactId>
         </dependency>
+        <dependency>
+            <groupId>io.github.aliyun-mq</groupId>
+            <artifactId>rocketmq-slf4j-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.github.aliyun-mq</groupId>
+            <artifactId>rocketmq-logback-classic</artifactId>
+        </dependency>
     </dependencies>
 </project>
diff --git a/common/src/main/java/org/apache/rocketmq/common/AbstractBrokerRunnable.java b/common/src/main/java/org/apache/rocketmq/common/AbstractBrokerRunnable.java
index fa799be..8bce59d 100644
--- a/common/src/main/java/org/apache/rocketmq/common/AbstractBrokerRunnable.java
+++ b/common/src/main/java/org/apache/rocketmq/common/AbstractBrokerRunnable.java
@@ -17,8 +17,6 @@
 
 package org.apache.rocketmq.common;
 
-import org.apache.rocketmq.logging.InnerLoggerFactory;
-
 public abstract class AbstractBrokerRunnable implements Runnable {
     protected final BrokerIdentity brokerIdentity;
 
@@ -35,7 +33,7 @@
     public void run() {
         if (brokerIdentity.isInBrokerContainer()) {
             // set threadlocal broker identity to forward logging to corresponding broker
-            InnerLoggerFactory.BROKER_IDENTITY.set(brokerIdentity.getCanonicalName());
+//            InnerLoggerFactory.BROKER_IDENTITY.set(brokerIdentity.getCanonicalName());
         }
         run2();
     }
diff --git a/common/src/main/java/org/apache/rocketmq/common/BrokerConfig.java b/common/src/main/java/org/apache/rocketmq/common/BrokerConfig.java
index 7144397..1c9b301 100644
--- a/common/src/main/java/org/apache/rocketmq/common/BrokerConfig.java
+++ b/common/src/main/java/org/apache/rocketmq/common/BrokerConfig.java
@@ -23,11 +23,11 @@
 import org.apache.rocketmq.common.message.MessageRequestMode;
 import org.apache.rocketmq.common.topic.TopicValidator;
 import org.apache.rocketmq.common.utils.NetworkUtil;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 public class BrokerConfig extends BrokerIdentity {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.COMMON_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.COMMON_LOGGER_NAME);
 
     private String brokerConfigPath = null;
 
diff --git a/common/src/main/java/org/apache/rocketmq/common/BrokerIdentity.java b/common/src/main/java/org/apache/rocketmq/common/BrokerIdentity.java
index 74f8126..be8cf79 100644
--- a/common/src/main/java/org/apache/rocketmq/common/BrokerIdentity.java
+++ b/common/src/main/java/org/apache/rocketmq/common/BrokerIdentity.java
@@ -24,14 +24,13 @@
 import org.apache.commons.lang3.builder.HashCodeBuilder;
 import org.apache.rocketmq.common.annotation.ImportantField;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InnerLoggerFactory;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 public class BrokerIdentity {
     private static final String DEFAULT_CLUSTER_NAME = "DefaultCluster";
 
-    protected static final InternalLogger LOGGER = InternalLoggerFactory.getLogger(LoggerName.COMMON_LOGGER_NAME);
+    protected static final Logger LOGGER = LoggerFactory.getLogger(LoggerName.COMMON_LOGGER_NAME);
 
     private static String localHostName;
 
@@ -117,7 +116,7 @@
 
     public String getCanonicalName() {
         if (isBrokerContainer) {
-            return InnerLoggerFactory.BROKER_CONTAINER_NAME;
+//            return InnerLoggerFactory.BROKER_CONTAINER_NAME;
         }
         return this.getBrokerClusterName() + "_" + this.getBrokerName() + "_" + this.getBrokerId();
     }
diff --git a/common/src/main/java/org/apache/rocketmq/common/ConfigManager.java b/common/src/main/java/org/apache/rocketmq/common/ConfigManager.java
index 13d5b6b..9fc3304 100644
--- a/common/src/main/java/org/apache/rocketmq/common/ConfigManager.java
+++ b/common/src/main/java/org/apache/rocketmq/common/ConfigManager.java
@@ -19,11 +19,11 @@
 import java.io.IOException;
 import java.util.Map;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 public abstract class ConfigManager {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.COMMON_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.COMMON_LOGGER_NAME);
 
     public abstract String encode();
 
diff --git a/common/src/main/java/org/apache/rocketmq/common/MixAll.java b/common/src/main/java/org/apache/rocketmq/common/MixAll.java
index f18df48..6abf3e7 100644
--- a/common/src/main/java/org/apache/rocketmq/common/MixAll.java
+++ b/common/src/main/java/org/apache/rocketmq/common/MixAll.java
@@ -20,8 +20,8 @@
 import org.apache.rocketmq.common.constant.LoggerName;
 import org.apache.rocketmq.common.help.FAQUrl;
 import org.apache.rocketmq.common.utils.IOTinyUtils;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 import java.io.ByteArrayInputStream;
 import java.io.File;
@@ -103,7 +103,7 @@
     public static final String ZONE_NAME = "__ZONE_NAME"; 
     public static final String ZONE_MODE = "__ZONE_MODE";
 
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.COMMON_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.COMMON_LOGGER_NAME);
     public static final String LOGICAL_QUEUE_MOCK_BROKER_PREFIX = "__syslo__";
     public static final String METADATA_SCOPE_GLOBAL = "__global__";
     public static final String LOGICAL_QUEUE_MOCK_BROKER_NAME_NOT_EXIST = "__syslo__none__";
@@ -252,11 +252,11 @@
         return null;
     }
 
-    public static void printObjectProperties(final InternalLogger logger, final Object object) {
+    public static void printObjectProperties(final Logger logger, final Object object) {
         printObjectProperties(logger, object, false);
     }
 
-    public static void printObjectProperties(final InternalLogger logger, final Object object,
+    public static void printObjectProperties(final Logger logger, final Object object,
         final boolean onlyImportantField) {
         Field[] fields = object.getClass().getDeclaredFields();
         for (Field field : fields) {
diff --git a/common/src/main/java/org/apache/rocketmq/common/ServiceThread.java b/common/src/main/java/org/apache/rocketmq/common/ServiceThread.java
index a84bcc8..6023e9e 100644
--- a/common/src/main/java/org/apache/rocketmq/common/ServiceThread.java
+++ b/common/src/main/java/org/apache/rocketmq/common/ServiceThread.java
@@ -19,11 +19,11 @@
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicBoolean;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 public abstract class ServiceThread implements Runnable {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.COMMON_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.COMMON_LOGGER_NAME);
 
     private static final long JOIN_TIME = 90 * 1000;
 
diff --git a/common/src/main/java/org/apache/rocketmq/common/ThreadFactoryImpl.java b/common/src/main/java/org/apache/rocketmq/common/ThreadFactoryImpl.java
index a21fb35..a87c171 100644
--- a/common/src/main/java/org/apache/rocketmq/common/ThreadFactoryImpl.java
+++ b/common/src/main/java/org/apache/rocketmq/common/ThreadFactoryImpl.java
@@ -20,12 +20,12 @@
 import java.util.concurrent.ThreadFactory;
 import java.util.concurrent.atomic.AtomicLong;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 public class ThreadFactoryImpl implements ThreadFactory {
 
-    private static final InternalLogger LOGGER = InternalLoggerFactory.getLogger(LoggerName.COMMON_LOGGER_NAME);
+    private static final Logger LOGGER = LoggerFactory.getLogger(LoggerName.COMMON_LOGGER_NAME);
 
     private final AtomicLong threadIndex = new AtomicLong(0);
     private final String threadNamePrefix;
diff --git a/common/src/main/java/org/apache/rocketmq/common/UtilAll.java b/common/src/main/java/org/apache/rocketmq/common/UtilAll.java
index 81f5df7..8b7b269 100644
--- a/common/src/main/java/org/apache/rocketmq/common/UtilAll.java
+++ b/common/src/main/java/org/apache/rocketmq/common/UtilAll.java
@@ -47,14 +47,14 @@
 import org.apache.commons.lang3.SystemUtils;
 import org.apache.commons.validator.routines.InetAddressValidator;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import sun.misc.Unsafe;
 import sun.nio.ch.DirectBuffer;
 
 public class UtilAll {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.COMMON_LOGGER_NAME);
-    private static final InternalLogger STORE_LOG = InternalLoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.COMMON_LOGGER_NAME);
+    private static final Logger STORE_LOG = LoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
 
 
     public static final String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";
diff --git a/common/src/main/java/org/apache/rocketmq/common/compression/Lz4Compressor.java b/common/src/main/java/org/apache/rocketmq/common/compression/Lz4Compressor.java
index 4e537d8..162487a 100644
--- a/common/src/main/java/org/apache/rocketmq/common/compression/Lz4Compressor.java
+++ b/common/src/main/java/org/apache/rocketmq/common/compression/Lz4Compressor.java
@@ -23,11 +23,11 @@
 import net.jpountz.lz4.LZ4FrameInputStream;
 import net.jpountz.lz4.LZ4FrameOutputStream;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 public class Lz4Compressor implements Compressor {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.COMMON_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.COMMON_LOGGER_NAME);
 
     @Override
     public byte[] compress(byte[] src, int level) throws IOException {
diff --git a/common/src/main/java/org/apache/rocketmq/common/compression/ZlibCompressor.java b/common/src/main/java/org/apache/rocketmq/common/compression/ZlibCompressor.java
index 64e798f..a457830 100644
--- a/common/src/main/java/org/apache/rocketmq/common/compression/ZlibCompressor.java
+++ b/common/src/main/java/org/apache/rocketmq/common/compression/ZlibCompressor.java
@@ -23,11 +23,11 @@
 import java.util.zip.DeflaterOutputStream;
 import java.util.zip.InflaterInputStream;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 public class ZlibCompressor implements Compressor {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.COMMON_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.COMMON_LOGGER_NAME);
 
     @Override
     public byte[] compress(byte[] src, int level) throws IOException {
diff --git a/common/src/main/java/org/apache/rocketmq/common/compression/ZstdCompressor.java b/common/src/main/java/org/apache/rocketmq/common/compression/ZstdCompressor.java
index 3a220ce..5e1351d 100644
--- a/common/src/main/java/org/apache/rocketmq/common/compression/ZstdCompressor.java
+++ b/common/src/main/java/org/apache/rocketmq/common/compression/ZstdCompressor.java
@@ -23,11 +23,11 @@
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 public class ZstdCompressor implements Compressor {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.COMMON_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.COMMON_LOGGER_NAME);
 
     @Override
     public byte[] compress(byte[] src, int level) throws IOException {
diff --git a/common/src/main/java/org/apache/rocketmq/common/namesrv/DefaultTopAddressing.java b/common/src/main/java/org/apache/rocketmq/common/namesrv/DefaultTopAddressing.java
index be7e78c..f45b2aa 100644
--- a/common/src/main/java/org/apache/rocketmq/common/namesrv/DefaultTopAddressing.java
+++ b/common/src/main/java/org/apache/rocketmq/common/namesrv/DefaultTopAddressing.java
@@ -28,12 +28,12 @@
 import org.apache.rocketmq.common.constant.LoggerName;
 import org.apache.rocketmq.common.help.FAQUrl;
 import org.apache.rocketmq.common.utils.HttpTinyClient;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 public class DefaultTopAddressing implements TopAddressing {
 
-    private static final InternalLogger LOGGER = InternalLoggerFactory.getLogger(LoggerName.COMMON_LOGGER_NAME);
+    private static final Logger LOGGER = LoggerFactory.getLogger(LoggerName.COMMON_LOGGER_NAME);
 
     private String nsAddr;
     private String wsAddr;
diff --git a/common/src/main/java/org/apache/rocketmq/common/queue/ConcurrentTreeMap.java b/common/src/main/java/org/apache/rocketmq/common/queue/ConcurrentTreeMap.java
index b5999a7..774a428 100644
--- a/common/src/main/java/org/apache/rocketmq/common/queue/ConcurrentTreeMap.java
+++ b/common/src/main/java/org/apache/rocketmq/common/queue/ConcurrentTreeMap.java
@@ -22,14 +22,14 @@
 import java.util.TreeMap;
 import java.util.concurrent.locks.ReentrantLock;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 /**
  * thread safe
  */
 public class ConcurrentTreeMap<K, V> {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
     private final ReentrantLock lock;
     private TreeMap<K, V> tree;
     private RoundQueue<K> roundQueue;
diff --git a/common/src/main/java/org/apache/rocketmq/common/statistics/StatisticsItemPrinter.java b/common/src/main/java/org/apache/rocketmq/common/statistics/StatisticsItemPrinter.java
index 26c1df8..5901acc 100644
--- a/common/src/main/java/org/apache/rocketmq/common/statistics/StatisticsItemPrinter.java
+++ b/common/src/main/java/org/apache/rocketmq/common/statistics/StatisticsItemPrinter.java
@@ -16,19 +16,19 @@
  */
 package org.apache.rocketmq.common.statistics;
 
-import org.apache.rocketmq.logging.InternalLogger;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
 
 public class StatisticsItemPrinter {
-    private InternalLogger log;
+    private Logger log;
 
     private StatisticsItemFormatter formatter;
 
-    public StatisticsItemPrinter(StatisticsItemFormatter formatter, InternalLogger log) {
+    public StatisticsItemPrinter(StatisticsItemFormatter formatter, Logger log) {
         this.formatter = formatter;
         this.log = log;
     }
 
-    public void log(InternalLogger log) {
+    public void log(Logger log) {
         this.log = log;
     }
 
diff --git a/common/src/main/java/org/apache/rocketmq/common/stats/MomentStatsItem.java b/common/src/main/java/org/apache/rocketmq/common/stats/MomentStatsItem.java
index bc987b1..1470754 100644
--- a/common/src/main/java/org/apache/rocketmq/common/stats/MomentStatsItem.java
+++ b/common/src/main/java/org/apache/rocketmq/common/stats/MomentStatsItem.java
@@ -21,7 +21,7 @@
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicLong;
 import org.apache.rocketmq.common.UtilAll;
-import org.apache.rocketmq.logging.InternalLogger;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
 
 public class MomentStatsItem {
 
@@ -30,10 +30,10 @@
     private final String statsName;
     private final String statsKey;
     private final ScheduledExecutorService scheduledExecutorService;
-    private final InternalLogger log;
+    private final Logger log;
 
     public MomentStatsItem(String statsName, String statsKey,
-        ScheduledExecutorService scheduledExecutorService, InternalLogger log) {
+        ScheduledExecutorService scheduledExecutorService, Logger log) {
         this.statsName = statsName;
         this.statsKey = statsKey;
         this.scheduledExecutorService = scheduledExecutorService;
diff --git a/common/src/main/java/org/apache/rocketmq/common/stats/MomentStatsItemSet.java b/common/src/main/java/org/apache/rocketmq/common/stats/MomentStatsItemSet.java
index 522130e..96e1d50 100644
--- a/common/src/main/java/org/apache/rocketmq/common/stats/MomentStatsItemSet.java
+++ b/common/src/main/java/org/apache/rocketmq/common/stats/MomentStatsItemSet.java
@@ -24,16 +24,16 @@
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.TimeUnit;
 import org.apache.rocketmq.common.UtilAll;
-import org.apache.rocketmq.logging.InternalLogger;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
 
 public class MomentStatsItemSet {
     private final ConcurrentMap<String/* key */, MomentStatsItem> statsItemTable =
         new ConcurrentHashMap<>(128);
     private final String statsName;
     private final ScheduledExecutorService scheduledExecutorService;
-    private final InternalLogger log;
+    private final Logger log;
 
-    public MomentStatsItemSet(String statsName, ScheduledExecutorService scheduledExecutorService, InternalLogger log) {
+    public MomentStatsItemSet(String statsName, ScheduledExecutorService scheduledExecutorService, Logger log) {
         this.statsName = statsName;
         this.scheduledExecutorService = scheduledExecutorService;
         this.log = log;
diff --git a/common/src/main/java/org/apache/rocketmq/common/stats/RTStatsItem.java b/common/src/main/java/org/apache/rocketmq/common/stats/RTStatsItem.java
index 102148c..5e86842 100644
--- a/common/src/main/java/org/apache/rocketmq/common/stats/RTStatsItem.java
+++ b/common/src/main/java/org/apache/rocketmq/common/stats/RTStatsItem.java
@@ -17,17 +17,17 @@
 
 package org.apache.rocketmq.common.stats;
 
-import org.apache.rocketmq.logging.InternalLogger;
-
 import java.util.concurrent.ScheduledExecutorService;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
 
 /**
  * A StatItem for response time, the only difference between from StatsItem is it has a different log output.
  */
 public class RTStatsItem extends StatsItem {
 
-    public RTStatsItem(String statsName, String statsKey, ScheduledExecutorService scheduledExecutorService, InternalLogger log) {
-        super(statsName, statsKey, scheduledExecutorService, log);
+    public RTStatsItem(String statsName, String statsKey, ScheduledExecutorService scheduledExecutorService,
+        Logger logger) {
+        super(statsName, statsKey, scheduledExecutorService, logger);
     }
 
     /**
diff --git a/common/src/main/java/org/apache/rocketmq/common/stats/StatsItem.java b/common/src/main/java/org/apache/rocketmq/common/stats/StatsItem.java
index 35e4da5..765c66d 100644
--- a/common/src/main/java/org/apache/rocketmq/common/stats/StatsItem.java
+++ b/common/src/main/java/org/apache/rocketmq/common/stats/StatsItem.java
@@ -23,10 +23,9 @@
 import java.util.concurrent.atomic.LongAdder;
 
 import org.apache.rocketmq.common.UtilAll;
-import org.apache.rocketmq.logging.InternalLogger;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
 
 public class StatsItem {
-
     private final LongAdder value = new LongAdder();
 
     private final LongAdder times = new LongAdder();
@@ -40,14 +39,14 @@
     private final String statsName;
     private final String statsKey;
     private final ScheduledExecutorService scheduledExecutorService;
-    private final InternalLogger log;
 
-    public StatsItem(String statsName, String statsKey, ScheduledExecutorService scheduledExecutorService,
-        InternalLogger log) {
+    private final Logger logger;
+
+    public StatsItem(String statsName, String statsKey, ScheduledExecutorService scheduledExecutorService, Logger logger) {
         this.statsName = statsName;
         this.statsKey = statsKey;
         this.scheduledExecutorService = scheduledExecutorService;
-        this.log = log;
+        this.logger = logger;
     }
 
     private static StatsSnapshot computeStatsData(final LinkedList<CallSnapshot> csList) {
@@ -194,18 +193,18 @@
 
     public void printAtMinutes() {
         StatsSnapshot ss = computeStatsData(this.csListMinute);
-        log.info(String.format("[%s] [%s] Stats In One Minute, ", this.statsName, this.statsKey) + statPrintDetail(ss));
+        logger.info(String.format("[%s] [%s] Stats In One Minute, ", this.statsName, this.statsKey) + statPrintDetail(ss));
     }
 
     public void printAtHour() {
         StatsSnapshot ss = computeStatsData(this.csListHour);
-        log.info(String.format("[%s] [%s] Stats In One Hour, ", this.statsName, this.statsKey) + statPrintDetail(ss));
+        logger.info(String.format("[%s] [%s] Stats In One Hour, ", this.statsName, this.statsKey) + statPrintDetail(ss));
 
     }
 
     public void printAtDay() {
         StatsSnapshot ss = computeStatsData(this.csListDay);
-        log.info(String.format("[%s] [%s] Stats In One Day, ", this.statsName, this.statsKey) + statPrintDetail(ss));
+        logger.info(String.format("[%s] [%s] Stats In One Day, ", this.statsName, this.statsKey) + statPrintDetail(ss));
     }
 
     protected String statPrintDetail(StatsSnapshot ss) {
diff --git a/common/src/main/java/org/apache/rocketmq/common/stats/StatsItemSet.java b/common/src/main/java/org/apache/rocketmq/common/stats/StatsItemSet.java
index eb85384..b9bd8c9 100644
--- a/common/src/main/java/org/apache/rocketmq/common/stats/StatsItemSet.java
+++ b/common/src/main/java/org/apache/rocketmq/common/stats/StatsItemSet.java
@@ -24,7 +24,7 @@
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.TimeUnit;
 import org.apache.rocketmq.common.UtilAll;
-import org.apache.rocketmq.logging.InternalLogger;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
 
 public class StatsItemSet {
     private final ConcurrentMap<String/* key */, StatsItem> statsItemTable =
@@ -32,12 +32,13 @@
 
     private final String statsName;
     private final ScheduledExecutorService scheduledExecutorService;
-    private final InternalLogger log;
 
-    public StatsItemSet(String statsName, ScheduledExecutorService scheduledExecutorService, InternalLogger log) {
+    private final Logger logger;
+
+    public StatsItemSet(String statsName, ScheduledExecutorService scheduledExecutorService, Logger logger) {
+        this.logger = logger;
         this.statsName = statsName;
         this.scheduledExecutorService = scheduledExecutorService;
-        this.log = log;
         this.init();
     }
 
@@ -213,9 +214,9 @@
         StatsItem statsItem = this.statsItemTable.get(statsKey);
         if (null == statsItem) {
             if (rtItem) {
-                statsItem = new RTStatsItem(this.statsName, statsKey, this.scheduledExecutorService, this.log);
+                statsItem = new RTStatsItem(this.statsName, statsKey, this.scheduledExecutorService, logger);
             } else {
-                statsItem = new StatsItem(this.statsName, statsKey, this.scheduledExecutorService, this.log);
+                statsItem = new StatsItem(this.statsName, statsKey, this.scheduledExecutorService, logger);
             }
             StatsItem prev = this.statsItemTable.putIfAbsent(statsKey, statsItem);
 
diff --git a/common/src/main/java/org/apache/rocketmq/common/thread/ThreadPoolMonitor.java b/common/src/main/java/org/apache/rocketmq/common/thread/ThreadPoolMonitor.java
index e5bb6a3..7b25c7e 100644
--- a/common/src/main/java/org/apache/rocketmq/common/thread/ThreadPoolMonitor.java
+++ b/common/src/main/java/org/apache/rocketmq/common/thread/ThreadPoolMonitor.java
@@ -28,12 +28,12 @@
 import java.util.concurrent.ThreadPoolExecutor;
 import java.util.concurrent.TimeUnit;
 import org.apache.rocketmq.common.UtilAll;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 public class ThreadPoolMonitor {
-    private static InternalLogger jstackLogger = InternalLoggerFactory.getLogger(ThreadPoolMonitor.class);
-    private static InternalLogger waterMarkLogger = InternalLoggerFactory.getLogger(ThreadPoolMonitor.class);
+    private static Logger jstackLogger = LoggerFactory.getLogger(ThreadPoolMonitor.class);
+    private static Logger waterMarkLogger = LoggerFactory.getLogger(ThreadPoolMonitor.class);
 
     private static final List<ThreadPoolWrapper> MONITOR_EXECUTOR = new CopyOnWriteArrayList<>();
     private static final ScheduledExecutorService MONITOR_SCHEDULED = Executors.newSingleThreadScheduledExecutor(
@@ -45,7 +45,7 @@
     private static volatile long jstackPeriodTime = 60000;
     private static volatile long jstackTime = System.currentTimeMillis();
 
-    public static void config(InternalLogger jstackLoggerConfig, InternalLogger waterMarkLoggerConfig,
+    public static void config(Logger jstackLoggerConfig, Logger waterMarkLoggerConfig,
         boolean enablePrintJstack, long jstackPeriodTimeConfig, long threadPoolStatusPeriodTimeConfig) {
         jstackLogger = jstackLoggerConfig;
         waterMarkLogger = waterMarkLoggerConfig;
diff --git a/common/src/main/java/org/apache/rocketmq/common/utils/NetworkUtil.java b/common/src/main/java/org/apache/rocketmq/common/utils/NetworkUtil.java
index 5d05bc1..36859b4 100644
--- a/common/src/main/java/org/apache/rocketmq/common/utils/NetworkUtil.java
+++ b/common/src/main/java/org/apache/rocketmq/common/utils/NetworkUtil.java
@@ -29,13 +29,13 @@
 import java.util.ArrayList;
 import java.util.Enumeration;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 public class NetworkUtil {
     public static final String OS_NAME = System.getProperty("os.name");
 
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.COMMON_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.COMMON_LOGGER_NAME);
     private static boolean isLinuxPlatform = false;
     private static boolean isWindowsPlatform = false;
 
diff --git a/common/src/main/java/org/apache/rocketmq/common/utils/ServiceProvider.java b/common/src/main/java/org/apache/rocketmq/common/utils/ServiceProvider.java
index 00c8bff..c465a44 100644
--- a/common/src/main/java/org/apache/rocketmq/common/utils/ServiceProvider.java
+++ b/common/src/main/java/org/apache/rocketmq/common/utils/ServiceProvider.java
@@ -20,8 +20,8 @@
 import java.nio.charset.StandardCharsets;
 
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 import java.io.BufferedReader;
 import java.io.InputStream;
@@ -30,9 +30,7 @@
 import java.util.List;
 
 public class ServiceProvider {
-    
-    private static final InternalLogger LOG = InternalLoggerFactory.getLogger(LoggerName.COMMON_LOGGER_NAME);
-    
+    private static final Logger LOG = LoggerFactory.getLogger(LoggerName.COMMON_LOGGER_NAME);
     /**
      * A reference to the classloader that loaded this class. It's more efficient to compute it once and cache it here.
      */
diff --git a/common/src/main/java/org/apache/rocketmq/common/utils/ThreadUtils.java b/common/src/main/java/org/apache/rocketmq/common/utils/ThreadUtils.java
index 61ca4a8..7fb7796 100644
--- a/common/src/main/java/org/apache/rocketmq/common/utils/ThreadUtils.java
+++ b/common/src/main/java/org/apache/rocketmq/common/utils/ThreadUtils.java
@@ -26,11 +26,11 @@
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicInteger;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 public final class ThreadUtils {
-    private static final InternalLogger LOGGER = InternalLoggerFactory.getLogger(LoggerName.TOOLS_LOGGER_NAME);
+    private static final Logger LOGGER = LoggerFactory.getLogger(LoggerName.TOOLS_LOGGER_NAME);
 
     public static ExecutorService newThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime,
         TimeUnit unit, BlockingQueue<Runnable> workQueue, String processName, boolean isDaemon) {
diff --git a/store/src/test/resources/logback-test.xml b/common/src/test/resources/rmq.logback-test.xml
similarity index 64%
copy from store/src/test/resources/logback-test.xml
copy to common/src/test/resources/rmq.logback-test.xml
index a033816..c3ec0d1 100644
--- a/store/src/test/resources/logback-test.xml
+++ b/common/src/test/resources/rmq.logback-test.xml
@@ -17,19 +17,20 @@
   -->
 <configuration>
 
-    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
-        <encoder>
-            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n</pattern>
-            <charset class="java.nio.charset.Charset">UTF-8</charset>
-        </encoder>
+    <appender name="CONSOLE" class="org.apache.rocketmq.shade.ch.qos.logback.core.ConsoleAppender">
+        <layout class="org.apache.rocketmq.shade.ch.qos.logback.classic.PatternLayout">
+            <Pattern>
+                %d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n
+            </Pattern>
+        </layout>
     </appender>
 
-    <logger name="org.apache.rocketmq.store" level="WARN" additivity="false">
-        <appender-ref ref="STDOUT"/>
+    <logger name="org.apache.rocketmq" level="error" additivity="false">
+        <appender-ref ref="CONSOLE"/>
     </logger>
 
-    <root level="OFF">
-        <appender-ref ref="STDOUT"/>
+    <root level="error">
+        <appender-ref ref="CONSOLE"/>
     </root>
 
-</configuration>
+</configuration>
\ No newline at end of file
diff --git a/container/BUILD.bazel b/container/BUILD.bazel
index 15fc0ae..71611bd 100644
--- a/container/BUILD.bazel
+++ b/container/BUILD.bazel
@@ -23,7 +23,6 @@
     deps = [
         "//broker",
         "//common",
-        "//logging",
         "//remoting",
         "//client",
         "//srvutil", 
@@ -42,6 +41,7 @@
         "@maven//:ch_qos_logback_logback_core",
         "@maven//:ch_qos_logback_logback_classic",
         "@maven//:commons_cli_commons_cli",
+        "@maven//:io_github_aliyun_mq_rocketmq_slf4j_api",
     ],
 )
 
@@ -53,7 +53,6 @@
         ":container",
         "//broker",
         "//common",
-        "//logging",
         "//remoting",
         "//client",
         "//srvutil", 
diff --git a/container/pom.xml b/container/pom.xml
index c0ea9d3..dc7ab5d 100644
--- a/container/pom.xml
+++ b/container/pom.xml
@@ -34,6 +34,13 @@
         <dependency>
             <groupId>org.apache.rocketmq</groupId>
             <artifactId>rocketmq-broker</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+            <scope>test</scope>
         </dependency>
     </dependencies>
 </project>
diff --git a/container/src/main/java/org/apache/rocketmq/container/BrokerContainer.java b/container/src/main/java/org/apache/rocketmq/container/BrokerContainer.java
index 20f549b..e5c9209 100644
--- a/container/src/main/java/org/apache/rocketmq/container/BrokerContainer.java
+++ b/container/src/main/java/org/apache/rocketmq/container/BrokerContainer.java
@@ -39,8 +39,8 @@
 import org.apache.rocketmq.common.constant.LoggerName;
 import org.apache.rocketmq.common.utils.ThreadUtils;
 import org.apache.rocketmq.container.logback.BrokerLogbackConfigurator;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.Configuration;
 import org.apache.rocketmq.remoting.RPCHook;
 import org.apache.rocketmq.remoting.RemotingServer;
@@ -51,7 +51,7 @@
 import org.apache.rocketmq.store.config.MessageStoreConfig;
 
 public class BrokerContainer implements IBrokerContainer {
-    private static final InternalLogger LOG = InternalLoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
+    private static final Logger LOG = LoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
 
     private final ScheduledExecutorService scheduledExecutorService = new ScheduledThreadPoolExecutor(1,
         new BasicThreadFactory.Builder()
diff --git a/container/src/main/java/org/apache/rocketmq/container/BrokerContainerProcessor.java b/container/src/main/java/org/apache/rocketmq/container/BrokerContainerProcessor.java
index 671ea5f..ea28bd7 100644
--- a/container/src/main/java/org/apache/rocketmq/container/BrokerContainerProcessor.java
+++ b/container/src/main/java/org/apache/rocketmq/container/BrokerContainerProcessor.java
@@ -27,8 +27,8 @@
 import org.apache.rocketmq.common.BrokerIdentity;
 import org.apache.rocketmq.common.MixAll;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.common.RemotingHelper;
 import org.apache.rocketmq.remoting.exception.RemotingCommandException;
 import org.apache.rocketmq.remoting.netty.NettyRequestProcessor;
@@ -41,7 +41,7 @@
 import org.apache.rocketmq.store.config.MessageStoreConfig;
 
 public class BrokerContainerProcessor implements NettyRequestProcessor {
-    private static final InternalLogger LOGGER = InternalLoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
+    private static final Logger LOGGER = LoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
     private final BrokerContainer brokerContainer;
     private List<BrokerBootHook> brokerBootHookList;
 
diff --git a/container/src/main/java/org/apache/rocketmq/container/BrokerContainerStartup.java b/container/src/main/java/org/apache/rocketmq/container/BrokerContainerStartup.java
index d58f8ae..f60c99b 100644
--- a/container/src/main/java/org/apache/rocketmq/container/BrokerContainerStartup.java
+++ b/container/src/main/java/org/apache/rocketmq/container/BrokerContainerStartup.java
@@ -16,8 +16,6 @@
  */
 package org.apache.rocketmq.container;
 
-import ch.qos.logback.classic.LoggerContext;
-import ch.qos.logback.classic.joran.JoranConfigurator;
 import java.io.BufferedInputStream;
 import java.io.FileInputStream;
 import java.io.InputStream;
@@ -36,16 +34,14 @@
 import org.apache.rocketmq.common.MixAll;
 import org.apache.rocketmq.common.constant.LoggerName;
 import org.apache.rocketmq.common.utils.NetworkUtil;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.netty.NettyClientConfig;
 import org.apache.rocketmq.remoting.netty.NettyServerConfig;
 import org.apache.rocketmq.remoting.netty.NettySystemConfig;
 import org.apache.rocketmq.remoting.protocol.RemotingCommand;
 import org.apache.rocketmq.srvutil.ServerUtil;
 import org.apache.rocketmq.store.config.MessageStoreConfig;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class BrokerContainerStartup {
     private static final String BROKER_CONTAINER_CONFIG_OPTION = "c";
@@ -55,10 +51,9 @@
     public static Properties properties = null;
     public static CommandLine commandLine = null;
     public static String configFile = null;
-    public static InternalLogger log;
+    public static Logger log;
     public static final SystemConfigFileHelper CONFIG_FILE_HELPER = new SystemConfigFileHelper();
     public static String rocketmqHome = null;
-    public static final JoranConfigurator CONFIGURATOR = new JoranConfigurator();
 
     public static void main(String[] args) {
         final BrokerContainer brokerContainer = startBrokerContainer(createBrokerContainer(args));
@@ -173,7 +168,7 @@
 
         brokerConfig.setBrokerConfigPath(filePath);
 
-        log = InternalLoggerFactory.getLogger(brokerConfig.getLoggerIdentifier() + LoggerName.BROKER_LOGGER_NAME);
+        log = LoggerFactory.getLogger(brokerConfig.getLoggerIdentifier() + LoggerName.BROKER_LOGGER_NAME);
         MixAll.printObjectProperties(log, brokerConfig);
         MixAll.printObjectProperties(log, messageStoreConfig);
 
@@ -311,29 +306,21 @@
                 }
             }
 
-            LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
-            CONFIGURATOR.setContext(lc);
-            lc.reset();
-            //https://logback.qos.ch/manual/configuration.html
-            lc.setPackagingDataEnabled(false);
-
-            CONFIGURATOR.doConfigure(rocketmqHome + "/conf/logback_broker.xml");
-
             if (commandLine.hasOption(PRINT_PROPERTIES_OPTION)) {
-                InternalLogger console = InternalLoggerFactory.getLogger(LoggerName.BROKER_CONSOLE_NAME);
+                Logger console = LoggerFactory.getLogger(LoggerName.BROKER_CONSOLE_NAME);
                 MixAll.printObjectProperties(console, containerConfig);
                 MixAll.printObjectProperties(console, nettyServerConfig);
                 MixAll.printObjectProperties(console, nettyClientConfig);
                 System.exit(0);
             } else if (commandLine.hasOption(PRINT_IMPORTANT_PROPERTIES_OPTION)) {
-                InternalLogger console = InternalLoggerFactory.getLogger(LoggerName.BROKER_CONSOLE_NAME);
+                Logger console = LoggerFactory.getLogger(LoggerName.BROKER_CONSOLE_NAME);
                 MixAll.printObjectProperties(console, containerConfig, true);
                 MixAll.printObjectProperties(console, nettyServerConfig, true);
                 MixAll.printObjectProperties(console, nettyClientConfig, true);
                 System.exit(0);
             }
 
-            log = InternalLoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
+            log = LoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
             MixAll.printObjectProperties(log, containerConfig);
             MixAll.printObjectProperties(log, nettyServerConfig);
             MixAll.printObjectProperties(log, nettyClientConfig);
diff --git a/container/src/main/java/org/apache/rocketmq/container/logback/BrokerLogbackConfigurator.java b/container/src/main/java/org/apache/rocketmq/container/logback/BrokerLogbackConfigurator.java
index 45cbe93..ba74677 100644
--- a/container/src/main/java/org/apache/rocketmq/container/logback/BrokerLogbackConfigurator.java
+++ b/container/src/main/java/org/apache/rocketmq/container/logback/BrokerLogbackConfigurator.java
@@ -17,33 +17,16 @@
 
 package org.apache.rocketmq.container.logback;
 
-import ch.qos.logback.classic.AsyncAppender;
-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.encoder.Encoder;
-import ch.qos.logback.core.rolling.FixedWindowRollingPolicy;
-import ch.qos.logback.core.rolling.RollingFileAppender;
-import ch.qos.logback.core.rolling.RollingPolicy;
-import ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP;
-import ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy;
-import ch.qos.logback.core.rolling.TimeBasedFileNamingAndTriggeringPolicy;
-import ch.qos.logback.core.rolling.TimeBasedRollingPolicy;
-
-import java.lang.reflect.Field;
 import java.util.HashSet;
 import java.util.Set;
 
-import ch.qos.logback.core.util.FileSize;
 import org.apache.rocketmq.common.BrokerIdentity;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
-import org.slf4j.LoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 public class BrokerLogbackConfigurator {
-    private static final InternalLogger LOG = InternalLoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
+    private static final Logger LOG = LoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
 
     private static final Set<String> CONFIGURED_BROKER_LIST = new HashSet<>();
 
@@ -54,134 +37,5 @@
     public static final String SUFFIX_INNER_APPENDER = "_inner";
 
     public static void doConfigure(BrokerIdentity brokerIdentity) {
-        if (!CONFIGURED_BROKER_LIST.contains(brokerIdentity.getCanonicalName())) {
-            try {
-                LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
-                for (ch.qos.logback.classic.Logger tempLogger : lc.getLoggerList()) {
-                    String loggerName = tempLogger.getName();
-                    if (loggerName.startsWith(ROCKETMQ_PREFIX)
-                        && !loggerName.endsWith(SUFFIX_CONSOLE)
-                        && !loggerName.equals(LoggerName.ACCOUNT_LOGGER_NAME)
-                        && !loggerName.equals(LoggerName.COMMERCIAL_LOGGER_NAME)
-                        && !loggerName.equals(LoggerName.CONSUMER_STATS_LOGGER_NAME)) {
-                        ch.qos.logback.classic.Logger logger = lc.getLogger(brokerIdentity.getLoggerIdentifier() + loggerName);
-                        logger.setAdditive(tempLogger.isAdditive());
-                        logger.setLevel(tempLogger.getLevel());
-                        String appenderName = loggerName + SUFFIX_APPENDER;
-                        Appender<ILoggingEvent> tempAppender = tempLogger.getAppender(appenderName);
-                        if (tempAppender instanceof AsyncAppender) {
-                            AsyncAppender tempAsyncAppender = (AsyncAppender) tempAppender;
-                            AsyncAppender asyncAppender = new AsyncAppender();
-                            asyncAppender.setName(brokerIdentity.getLoggerIdentifier() + appenderName);
-                            asyncAppender.setContext(tempAsyncAppender.getContext());
-
-                            String innerAppenderName = appenderName + SUFFIX_INNER_APPENDER;
-                            Appender<ILoggingEvent> tempInnerAppender = tempAsyncAppender.getAppender(innerAppenderName);
-                            if (!(tempInnerAppender instanceof RollingFileAppender)) {
-                                continue;
-                            }
-                            asyncAppender.addAppender(configureRollingFileAppender((RollingFileAppender<ILoggingEvent>) tempInnerAppender,
-                                brokerIdentity, innerAppenderName));
-                            asyncAppender.start();
-                            logger.addAppender(asyncAppender);
-                        } else if (tempAppender instanceof RollingFileAppender) {
-                            logger.addAppender(configureRollingFileAppender((RollingFileAppender<ILoggingEvent>) tempAppender,
-                                brokerIdentity, appenderName));
-                        }
-                    }
-                }
-            } catch (Exception e) {
-                LOG.error("Configure logback for broker {} failed, will use default broker log config instead. {}", brokerIdentity.getCanonicalName(), e);
-                return;
-            }
-
-            CONFIGURED_BROKER_LIST.add(brokerIdentity.getCanonicalName());
-        }
-    }
-
-    private static RollingFileAppender<ILoggingEvent> configureRollingFileAppender(
-        RollingFileAppender<ILoggingEvent> tempRollingFileAppender, BrokerIdentity brokerIdentity, String appenderName)
-        throws NoSuchFieldException, IllegalAccessException {
-        RollingFileAppender<ILoggingEvent> rollingFileAppender = new RollingFileAppender<>();
-
-        // configure appender name
-        rollingFileAppender.setName(brokerIdentity.getLoggerIdentifier() + appenderName);
-
-        // configure file name
-        rollingFileAppender.setFile(tempRollingFileAppender.getFile().replaceAll(ROCKETMQ_LOGS, brokerIdentity.getCanonicalName() + "_" + ROCKETMQ_LOGS));
-
-        // configure append
-        rollingFileAppender.setAppend(true);
-
-        // configure prudent
-        rollingFileAppender.setPrudent(tempRollingFileAppender.isPrudent());
-
-        // configure rollingPolicy
-        RollingPolicy originalRollingPolicy = tempRollingFileAppender.getRollingPolicy();
-        if (originalRollingPolicy instanceof TimeBasedRollingPolicy) {
-            TimeBasedRollingPolicy<ILoggingEvent> tempRollingPolicy = (TimeBasedRollingPolicy<ILoggingEvent>) originalRollingPolicy;
-            TimeBasedRollingPolicy<ILoggingEvent> rollingPolicy = new TimeBasedRollingPolicy<>();
-            rollingPolicy.setContext(tempRollingPolicy.getContext());
-            rollingPolicy.setFileNamePattern(tempRollingPolicy.getFileNamePattern());
-            SizeAndTimeBasedFNATP<ILoggingEvent> sizeAndTimeBasedFNATP = new SizeAndTimeBasedFNATP<>();
-            sizeAndTimeBasedFNATP.setContext(tempRollingPolicy.getContext());
-            TimeBasedFileNamingAndTriggeringPolicy<ILoggingEvent> timeBasedFileNamingAndTriggeringPolicy =
-                tempRollingPolicy.getTimeBasedFileNamingAndTriggeringPolicy();
-            if (timeBasedFileNamingAndTriggeringPolicy instanceof SizeAndTimeBasedFNATP) {
-                SizeAndTimeBasedFNATP<ILoggingEvent> originalSizeAndTimeBasedFNATP =
-                    (SizeAndTimeBasedFNATP<ILoggingEvent>) timeBasedFileNamingAndTriggeringPolicy;
-                Field field = originalSizeAndTimeBasedFNATP.getClass().getDeclaredField("maxFileSize");
-                field.setAccessible(true);
-                sizeAndTimeBasedFNATP.setMaxFileSize((FileSize) field.get(originalSizeAndTimeBasedFNATP));
-                sizeAndTimeBasedFNATP.setTimeBasedRollingPolicy(rollingPolicy);
-            }
-            rollingPolicy.setTimeBasedFileNamingAndTriggeringPolicy(sizeAndTimeBasedFNATP);
-            rollingPolicy.setMaxHistory(tempRollingPolicy.getMaxHistory());
-            rollingPolicy.setParent(rollingFileAppender);
-            rollingPolicy.start();
-            rollingFileAppender.setRollingPolicy(rollingPolicy);
-        } else if (originalRollingPolicy instanceof FixedWindowRollingPolicy) {
-            FixedWindowRollingPolicy tempRollingPolicy = (FixedWindowRollingPolicy) originalRollingPolicy;
-            FixedWindowRollingPolicy rollingPolicy = new FixedWindowRollingPolicy();
-            rollingPolicy.setContext(tempRollingPolicy.getContext());
-            rollingPolicy.setFileNamePattern(tempRollingPolicy.getFileNamePattern().replaceAll(ROCKETMQ_LOGS, brokerIdentity.getCanonicalName() + "_" + ROCKETMQ_LOGS));
-            rollingPolicy.setMaxIndex(tempRollingPolicy.getMaxIndex());
-            rollingPolicy.setMinIndex(tempRollingPolicy.getMinIndex());
-            rollingPolicy.setParent(rollingFileAppender);
-            rollingPolicy.start();
-            rollingFileAppender.setRollingPolicy(rollingPolicy);
-        }
-
-        // configure triggerPolicy
-        if (tempRollingFileAppender.getTriggeringPolicy() instanceof SizeBasedTriggeringPolicy) {
-            SizeBasedTriggeringPolicy<ILoggingEvent> tempTriggerPolicy = (SizeBasedTriggeringPolicy<ILoggingEvent>) tempRollingFileAppender.getTriggeringPolicy();
-            SizeBasedTriggeringPolicy<ILoggingEvent> triggerPolicy = new SizeBasedTriggeringPolicy<>();
-            triggerPolicy.setContext(tempTriggerPolicy.getContext());
-            Field field = triggerPolicy.getClass().getDeclaredField("maxFileSize");
-            field.setAccessible(true);
-            triggerPolicy.setMaxFileSize((FileSize) field.get(triggerPolicy));
-            triggerPolicy.start();
-            rollingFileAppender.setTriggeringPolicy(triggerPolicy);
-        }
-
-        // configure encoder
-        Encoder<ILoggingEvent> tempEncoder = tempRollingFileAppender.getEncoder();
-        if (tempEncoder instanceof PatternLayoutEncoder) {
-            PatternLayoutEncoder tempPatternLayoutEncoder = (PatternLayoutEncoder) tempEncoder;
-            PatternLayoutEncoder patternLayoutEncoder = new PatternLayoutEncoder();
-            patternLayoutEncoder.setContext(tempPatternLayoutEncoder.getContext());
-            patternLayoutEncoder.setPattern(tempPatternLayoutEncoder.getPattern());
-            patternLayoutEncoder.setCharset(tempPatternLayoutEncoder.getCharset());
-            patternLayoutEncoder.start();
-
-            rollingFileAppender.setEncoder(patternLayoutEncoder);
-        }
-
-        // configure context
-        rollingFileAppender.setContext(tempRollingFileAppender.getContext());
-
-        rollingFileAppender.start();
-
-        return rollingFileAppender;
     }
 }
diff --git a/store/src/test/resources/logback-test.xml b/container/src/test/resources/rmq.logback-test.xml
similarity index 64%
copy from store/src/test/resources/logback-test.xml
copy to container/src/test/resources/rmq.logback-test.xml
index a033816..c3ec0d1 100644
--- a/store/src/test/resources/logback-test.xml
+++ b/container/src/test/resources/rmq.logback-test.xml
@@ -17,19 +17,20 @@
   -->
 <configuration>
 
-    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
-        <encoder>
-            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n</pattern>
-            <charset class="java.nio.charset.Charset">UTF-8</charset>
-        </encoder>
+    <appender name="CONSOLE" class="org.apache.rocketmq.shade.ch.qos.logback.core.ConsoleAppender">
+        <layout class="org.apache.rocketmq.shade.ch.qos.logback.classic.PatternLayout">
+            <Pattern>
+                %d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n
+            </Pattern>
+        </layout>
     </appender>
 
-    <logger name="org.apache.rocketmq.store" level="WARN" additivity="false">
-        <appender-ref ref="STDOUT"/>
+    <logger name="org.apache.rocketmq" level="error" additivity="false">
+        <appender-ref ref="CONSOLE"/>
     </logger>
 
-    <root level="OFF">
-        <appender-ref ref="STDOUT"/>
+    <root level="error">
+        <appender-ref ref="CONSOLE"/>
     </root>
 
-</configuration>
+</configuration>
\ No newline at end of file
diff --git a/controller/BUILD.bazel b/controller/BUILD.bazel
index ef9b9c5..f14480c 100644
--- a/controller/BUILD.bazel
+++ b/controller/BUILD.bazel
@@ -22,7 +22,6 @@
     visibility = ["//visibility:public"],
     deps = [
         "//common",
-        "//logging",
         "//remoting",
         "//client",
         "//srvutil", 
@@ -40,6 +39,7 @@
         "@maven//:ch_qos_logback_logback_core",
         "@maven//:ch_qos_logback_logback_classic",
         "@maven//:commons_cli_commons_cli",
+        "@maven//:io_github_aliyun_mq_rocketmq_slf4j_api",
     ],
 )
 
@@ -50,7 +50,6 @@
     deps = [
         ":controller",
         "//common",
-        "//logging",
         "//remoting",
         "//client",
         "//srvutil", 
diff --git a/controller/pom.xml b/controller/pom.xml
index 1f7698a..db5fd1e 100644
--- a/controller/pom.xml
+++ b/controller/pom.xml
@@ -44,19 +44,18 @@
         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>rocketmq-client</artifactId>
+            <version>${project.version}</version>
             <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>rocketmq-srvutil</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>ch.qos.logback</groupId>
-            <artifactId>logback-classic</artifactId>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>org.slf4j</groupId>
             <artifactId>slf4j-api</artifactId>
+            <scope>test</scope>
         </dependency>
     </dependencies>
 </project>
\ No newline at end of file
diff --git a/controller/src/main/java/org/apache/rocketmq/controller/BrokerHousekeepingService.java b/controller/src/main/java/org/apache/rocketmq/controller/BrokerHousekeepingService.java
index 50c96cf..a18b12c 100644
--- a/controller/src/main/java/org/apache/rocketmq/controller/BrokerHousekeepingService.java
+++ b/controller/src/main/java/org/apache/rocketmq/controller/BrokerHousekeepingService.java
@@ -18,12 +18,12 @@
 
 import io.netty.channel.Channel;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.ChannelEventListener;
 
 public class BrokerHousekeepingService implements ChannelEventListener {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.NAMESRV_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.NAMESRV_LOGGER_NAME);
     private final ControllerManager controllerManager;
 
     public BrokerHousekeepingService(ControllerManager controllerManager) {
diff --git a/controller/src/main/java/org/apache/rocketmq/controller/ControllerManager.java b/controller/src/main/java/org/apache/rocketmq/controller/ControllerManager.java
index 1add67a..cd8d0f2 100644
--- a/controller/src/main/java/org/apache/rocketmq/controller/ControllerManager.java
+++ b/controller/src/main/java/org/apache/rocketmq/controller/ControllerManager.java
@@ -34,8 +34,8 @@
 import org.apache.rocketmq.controller.impl.DLedgerController;
 import org.apache.rocketmq.controller.impl.DefaultBrokerHeartbeatManager;
 import org.apache.rocketmq.controller.processor.ControllerRequestProcessor;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.Configuration;
 import org.apache.rocketmq.remoting.RemotingClient;
 import org.apache.rocketmq.remoting.RemotingServer;
@@ -50,7 +50,7 @@
 import org.apache.rocketmq.remoting.protocol.header.namesrv.controller.ElectMasterResponseHeader;
 
 public class ControllerManager {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.CONTROLLER_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.CONTROLLER_LOGGER_NAME);
 
     private final ControllerConfig controllerConfig;
     private final NettyServerConfig nettyServerConfig;
diff --git a/controller/src/main/java/org/apache/rocketmq/controller/ControllerStartup.java b/controller/src/main/java/org/apache/rocketmq/controller/ControllerStartup.java
index e27ee68..7d24c0b 100644
--- a/controller/src/main/java/org/apache/rocketmq/controller/ControllerStartup.java
+++ b/controller/src/main/java/org/apache/rocketmq/controller/ControllerStartup.java
@@ -16,9 +16,6 @@
  */
 package org.apache.rocketmq.controller;
 
-import ch.qos.logback.classic.LoggerContext;
-import ch.qos.logback.classic.joran.JoranConfigurator;
-import ch.qos.logback.core.joran.spi.JoranException;
 import java.io.BufferedInputStream;
 import java.io.FileInputStream;
 import java.io.IOException;
@@ -33,18 +30,17 @@
 import org.apache.rocketmq.common.ControllerConfig;
 import org.apache.rocketmq.common.MixAll;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.netty.NettyClientConfig;
 import org.apache.rocketmq.remoting.netty.NettyServerConfig;
 import org.apache.rocketmq.remoting.protocol.RemotingCommand;
 import org.apache.rocketmq.srvutil.ServerUtil;
 import org.apache.rocketmq.srvutil.ShutdownHookThread;
-import org.slf4j.LoggerFactory;
 
 public class ControllerStartup {
 
-    private static InternalLogger log;
+    private static Logger log;
     private static Properties properties = null;
     private static CommandLine commandLine = null;
 
@@ -69,7 +65,7 @@
         return null;
     }
 
-    public static ControllerManager createControllerManager(String[] args) throws IOException, JoranException {
+    public static ControllerManager createControllerManager(String[] args) throws IOException {
         Options options = ServerUtil.buildCommandlineOptions(new Options());
         commandLine = ServerUtil.parseCmdLine("mqcontroller", args, buildCommandlineOptions(options), new DefaultParser());
         if (null == commandLine) {
@@ -106,18 +102,12 @@
 
         MixAll.properties2Object(ServerUtil.commandLine2Properties(commandLine), controllerConfig);
 
-        LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
-        JoranConfigurator configurator = new JoranConfigurator();
-        configurator.setContext(lc);
-        lc.reset();
-
         if (StringUtils.isEmpty(controllerConfig.getRocketmqHome())) {
             System.out.printf("Please set the %s or %s variable in your environment!%n", MixAll.ROCKETMQ_HOME_ENV, MixAll.ROCKETMQ_HOME_PROPERTY);
             System.exit(-1);
         }
-        configurator.doConfigure(controllerConfig.getRocketmqHome() + "/conf/logback_controller.xml");
 
-        log = InternalLoggerFactory.getLogger(LoggerName.NAMESRV_LOGGER_NAME);
+        log = LoggerFactory.getLogger(LoggerName.NAMESRV_LOGGER_NAME);
 
         MixAll.printObjectProperties(log, controllerConfig);
         MixAll.printObjectProperties(log, nettyServerConfig);
diff --git a/controller/src/main/java/org/apache/rocketmq/controller/impl/DLedgerController.java b/controller/src/main/java/org/apache/rocketmq/controller/impl/DLedgerController.java
index ba8a156..a45e18e 100644
--- a/controller/src/main/java/org/apache/rocketmq/controller/impl/DLedgerController.java
+++ b/controller/src/main/java/org/apache/rocketmq/controller/impl/DLedgerController.java
@@ -47,8 +47,8 @@
 import org.apache.rocketmq.controller.impl.event.EventMessage;
 import org.apache.rocketmq.controller.impl.event.EventSerializer;
 import org.apache.rocketmq.controller.impl.manager.ReplicasInfoManager;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.ChannelEventListener;
 import org.apache.rocketmq.remoting.CommandCustomHeader;
 import org.apache.rocketmq.remoting.RemotingServer;
@@ -69,7 +69,7 @@
  */
 public class DLedgerController implements Controller {
 
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.CONTROLLER_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.CONTROLLER_LOGGER_NAME);
     private final DLedgerServer dLedgerServer;
     private final ControllerConfig controllerConfig;
     private final DLedgerConfig dLedgerConfig;
diff --git a/controller/src/main/java/org/apache/rocketmq/controller/impl/DLedgerControllerStateMachine.java b/controller/src/main/java/org/apache/rocketmq/controller/impl/DLedgerControllerStateMachine.java
index ef31241..de4503d 100644
--- a/controller/src/main/java/org/apache/rocketmq/controller/impl/DLedgerControllerStateMachine.java
+++ b/controller/src/main/java/org/apache/rocketmq/controller/impl/DLedgerControllerStateMachine.java
@@ -26,14 +26,14 @@
 import org.apache.rocketmq.controller.impl.event.EventMessage;
 import org.apache.rocketmq.controller.impl.event.EventSerializer;
 import org.apache.rocketmq.controller.impl.manager.ReplicasInfoManager;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 /**
  * The state machine implementation of the dledger controller
  */
 public class DLedgerControllerStateMachine implements StateMachine {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.CONTROLLER_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.CONTROLLER_LOGGER_NAME);
     private final ReplicasInfoManager replicasInfoManager;
     private final EventSerializer eventSerializer;
     private final String dLedgerId;
diff --git a/controller/src/main/java/org/apache/rocketmq/controller/impl/DefaultBrokerHeartbeatManager.java b/controller/src/main/java/org/apache/rocketmq/controller/impl/DefaultBrokerHeartbeatManager.java
index 0e04ae4..6e32a12 100644
--- a/controller/src/main/java/org/apache/rocketmq/controller/impl/DefaultBrokerHeartbeatManager.java
+++ b/controller/src/main/java/org/apache/rocketmq/controller/impl/DefaultBrokerHeartbeatManager.java
@@ -33,12 +33,12 @@
 import org.apache.rocketmq.common.constant.LoggerName;
 import org.apache.rocketmq.controller.BrokerHeartbeatManager;
 import org.apache.rocketmq.controller.BrokerLiveInfo;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.common.RemotingHelper;
 
 public class DefaultBrokerHeartbeatManager implements BrokerHeartbeatManager {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.CONTROLLER_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.CONTROLLER_LOGGER_NAME);
     private static final long DEFAULT_BROKER_CHANNEL_EXPIRED_TIME = 1000 * 10;
     private final ScheduledExecutorService scheduledService = Executors.newSingleThreadScheduledExecutor(new ThreadFactoryImpl("DefaultBrokerHeartbeatManager_scheduledService_"));
     private final ExecutorService executor = Executors.newFixedThreadPool(2, new ThreadFactoryImpl("DefaultBrokerHeartbeatManager_executorService_"));
diff --git a/controller/src/main/java/org/apache/rocketmq/controller/impl/manager/ReplicasInfoManager.java b/controller/src/main/java/org/apache/rocketmq/controller/impl/manager/ReplicasInfoManager.java
index b3c7673..99808d2 100644
--- a/controller/src/main/java/org/apache/rocketmq/controller/impl/manager/ReplicasInfoManager.java
+++ b/controller/src/main/java/org/apache/rocketmq/controller/impl/manager/ReplicasInfoManager.java
@@ -37,8 +37,8 @@
 import org.apache.rocketmq.controller.impl.event.ElectMasterEvent;
 import org.apache.rocketmq.controller.impl.event.EventMessage;
 import org.apache.rocketmq.controller.impl.event.EventType;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.protocol.ResponseCode;
 import org.apache.rocketmq.remoting.protocol.body.BrokerMemberGroup;
 import org.apache.rocketmq.remoting.protocol.body.InSyncStateData;
@@ -59,7 +59,7 @@
  * be called sequentially
  */
 public class ReplicasInfoManager {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.CONTROLLER_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.CONTROLLER_LOGGER_NAME);
     private final ControllerConfig controllerConfig;
     private final Map<String/* brokerName */, BrokerInfo> replicaInfoTable;
     private final Map<String/* brokerName */, SyncStateInfo> syncStateSetInfoTable;
diff --git a/controller/src/main/java/org/apache/rocketmq/controller/processor/ControllerRequestProcessor.java b/controller/src/main/java/org/apache/rocketmq/controller/processor/ControllerRequestProcessor.java
index 42094a6..b7ecfdf 100644
--- a/controller/src/main/java/org/apache/rocketmq/controller/processor/ControllerRequestProcessor.java
+++ b/controller/src/main/java/org/apache/rocketmq/controller/processor/ControllerRequestProcessor.java
@@ -27,8 +27,8 @@
 import org.apache.rocketmq.common.constant.LoggerName;
 import org.apache.rocketmq.controller.BrokerHeartbeatManager;
 import org.apache.rocketmq.controller.ControllerManager;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.common.RemotingHelper;
 import org.apache.rocketmq.remoting.netty.NettyRequestProcessor;
 import org.apache.rocketmq.remoting.protocol.RemotingCommand;
@@ -59,7 +59,7 @@
  * Processor for controller request
  */
 public class ControllerRequestProcessor implements NettyRequestProcessor {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.CONTROLLER_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.CONTROLLER_LOGGER_NAME);
     private static final int WAIT_TIMEOUT_OUT = 5;
     private final ControllerManager controllerManager;
     private final BrokerHeartbeatManager heartbeatManager;
diff --git a/distribution/conf/logback_controller.xml b/controller/src/main/resources/rmq.controller.logback.xml
similarity index 78%
rename from distribution/conf/logback_controller.xml
rename to controller/src/main/resources/rmq.controller.logback.xml
index ad49dac..b6706f4 100644
--- a/distribution/conf/logback_controller.xml
+++ b/controller/src/main/resources/rmq.controller.logback.xml
@@ -18,16 +18,16 @@
 
 <configuration>
     <appender name="DefaultAppender"
-              class="ch.qos.logback.core.rolling.RollingFileAppender">
+              class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.RollingFileAppender">
         <file>${user.home}/logs/rocketmqlogs/controller_default.log</file>
         <append>true</append>
-        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+        <rollingPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
             <fileNamePattern>${user.home}/logs/rocketmqlogs/otherdays/controller_default.%i.log.gz</fileNamePattern>
             <minIndex>1</minIndex>
             <maxIndex>5</maxIndex>
         </rollingPolicy>
         <triggeringPolicy
-            class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+            class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
             <maxFileSize>100MB</maxFileSize>
         </triggeringPolicy>
         <encoder>
@@ -37,16 +37,16 @@
     </appender>
 
     <appender name="RocketmqControllerAppender_inner"
-              class="ch.qos.logback.core.rolling.RollingFileAppender">
+              class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.RollingFileAppender">
         <file>${user.home}/logs/rocketmqlogs/controller.log</file>
         <append>true</append>
-        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+        <rollingPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
             <fileNamePattern>${user.home}/logs/rocketmqlogs/otherdays/controller.%i.log.gz</fileNamePattern>
             <minIndex>1</minIndex>
             <maxIndex>5</maxIndex>
         </rollingPolicy>
         <triggeringPolicy
-            class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+            class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
             <maxFileSize>100MB</maxFileSize>
         </triggeringPolicy>
         <encoder>
@@ -54,12 +54,12 @@
             <charset class="java.nio.charset.Charset">UTF-8</charset>
         </encoder>
     </appender>
-    <appender name="RocketmqControllerAppender" class="ch.qos.logback.classic.AsyncAppender">
+    <appender name="RocketmqControllerAppender" class="org.apache.rocketmq.shade.ch.qos.logback.classic.AsyncAppender">
         <appender-ref ref="RocketmqControllerAppender_inner"/>
         <discardingThreshold>0</discardingThreshold>
     </appender>
 
-    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+    <appender name="STDOUT" class="org.apache.rocketmq.shade.ch.qos.logback.core.ConsoleAppender">
         <append>true</append>
         <encoder>
             <pattern>%d{yyy-MM-dd HH:mm:ss,GMT+8} %p %t - %m%n</pattern>
diff --git a/controller/src/test/resources/logback-test.xml b/controller/src/test/resources/logback-test.xml
deleted file mode 100644
index e7ebef1..0000000
--- a/controller/src/test/resources/logback-test.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one or more
-  ~ contributor license agreements.  See the NOTICE file distributed with
-  ~ this work for additional information regarding copyright ownership.
-  ~ The ASF licenses this file to You under the Apache License, Version 2.0
-  ~ (the "License"); you may not use this file except in compliance with
-  ~ the License.  You may obtain a copy of the License at
-  ~
-  ~     http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~  Unless required by applicable law or agreed to in writing, software
-  ~  distributed under the License is distributed on an "AS IS" BASIS,
-  ~  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~  See the License for the specific language governing permissions and
-  ~  limitations under the License.
-  -->
-
-<configuration>
-
-    <appender name="DefaultAppender" class="ch.qos.logback.core.ConsoleAppender">
-        <append>true</append>
-        <encoder>
-            <pattern>%d{yyy-MM-dd HH:mm:ss,GMT+8} %p %t - %m%n</pattern>
-            <charset class="java.nio.charset.Charset">UTF-8</charset>
-        </encoder>
-    </appender>
-
-    <root>
-        <level value="OFF"/>
-        <appender-ref ref="DefaultAppender"/>
-    </root>
-</configuration>
diff --git a/store/src/test/resources/logback-test.xml b/controller/src/test/resources/rmq.logback-test.xml
similarity index 64%
copy from store/src/test/resources/logback-test.xml
copy to controller/src/test/resources/rmq.logback-test.xml
index a033816..c3ec0d1 100644
--- a/store/src/test/resources/logback-test.xml
+++ b/controller/src/test/resources/rmq.logback-test.xml
@@ -17,19 +17,20 @@
   -->
 <configuration>
 
-    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
-        <encoder>
-            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n</pattern>
-            <charset class="java.nio.charset.Charset">UTF-8</charset>
-        </encoder>
+    <appender name="CONSOLE" class="org.apache.rocketmq.shade.ch.qos.logback.core.ConsoleAppender">
+        <layout class="org.apache.rocketmq.shade.ch.qos.logback.classic.PatternLayout">
+            <Pattern>
+                %d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n
+            </Pattern>
+        </layout>
     </appender>
 
-    <logger name="org.apache.rocketmq.store" level="WARN" additivity="false">
-        <appender-ref ref="STDOUT"/>
+    <logger name="org.apache.rocketmq" level="error" additivity="false">
+        <appender-ref ref="CONSOLE"/>
     </logger>
 
-    <root level="OFF">
-        <appender-ref ref="STDOUT"/>
+    <root level="error">
+        <appender-ref ref="CONSOLE"/>
     </root>
 
-</configuration>
+</configuration>
\ No newline at end of file
diff --git a/example/pom.xml b/example/pom.xml
index 22a01c6..197002e 100644
--- a/example/pom.xml
+++ b/example/pom.xml
@@ -35,26 +35,22 @@
         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>rocketmq-client</artifactId>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>rocketmq-srvutil</artifactId>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>rocketmq-openmessaging</artifactId>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>rocketmq-acl</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>rocketmq-tools</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>ch.qos.logback</groupId>
-            <artifactId>logback-classic</artifactId>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>org.javassist</groupId>
diff --git a/example/src/main/java/org/apache/rocketmq/example/benchmark/BatchProducer.java b/example/src/main/java/org/apache/rocketmq/example/benchmark/BatchProducer.java
index 23e9227..e182e36 100644
--- a/example/src/main/java/org/apache/rocketmq/example/benchmark/BatchProducer.java
+++ b/example/src/main/java/org/apache/rocketmq/example/benchmark/BatchProducer.java
@@ -35,18 +35,18 @@
 import org.apache.commons.lang3.RandomStringUtils;
 import org.apache.rocketmq.client.exception.MQBrokerException;
 import org.apache.rocketmq.client.exception.MQClientException;
-import org.apache.rocketmq.client.log.ClientLogger;
 import org.apache.rocketmq.client.producer.DefaultMQProducer;
 import org.apache.rocketmq.client.producer.SendResult;
 import org.apache.rocketmq.client.producer.SendStatus;
 import org.apache.rocketmq.common.ThreadFactoryImpl;
 import org.apache.rocketmq.common.UtilAll;
 import org.apache.rocketmq.common.message.Message;
-import org.apache.rocketmq.logging.InternalLogger;
 import org.apache.rocketmq.remoting.RPCHook;
 import org.apache.rocketmq.remoting.exception.RemotingException;
 import org.apache.rocketmq.remoting.protocol.RemotingCommand;
 import org.apache.rocketmq.remoting.protocol.SerializeType;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.srvutil.ServerUtil;
 
 public class BatchProducer {
@@ -95,7 +95,7 @@
         final DefaultMQProducer producer = initInstance(namesrv, msgTraceEnable, rpcHook);
         producer.start();
 
-        final InternalLogger log = ClientLogger.getLog();
+        final Logger logger = LoggerFactory.getLogger(BatchProducer.class);
         final ExecutorService sendThreadPool = Executors.newFixedThreadPool(threadCount);
         for (int i = 0; i < threadCount; i++) {
             sendThreadPool.execute(new Runnable() {
@@ -137,7 +137,7 @@
                         } catch (RemotingException e) {
                             statsBenchmark.getSendRequestFailedCount().increment();
                             statsBenchmark.getSendMessageFailedCount().add(msgs.size());
-                            log.error("[BENCHMARK_PRODUCER] Send Exception", e);
+                            logger.error("[BENCHMARK_PRODUCER] Send Exception", e);
 
                             try {
                                 Thread.sleep(3000);
@@ -152,15 +152,15 @@
                             }
                             statsBenchmark.getSendRequestFailedCount().increment();
                             statsBenchmark.getSendMessageFailedCount().add(msgs.size());
-                            log.error("[BENCHMARK_PRODUCER] Send Exception", e);
+                            logger.error("[BENCHMARK_PRODUCER] Send Exception", e);
                         } catch (MQClientException e) {
                             statsBenchmark.getSendRequestFailedCount().increment();
                             statsBenchmark.getSendMessageFailedCount().add(msgs.size());
-                            log.error("[BENCHMARK_PRODUCER] Send Exception", e);
+                            logger.error("[BENCHMARK_PRODUCER] Send Exception", e);
                         } catch (MQBrokerException e) {
                             statsBenchmark.getSendRequestFailedCount().increment();
                             statsBenchmark.getSendMessageFailedCount().add(msgs.size());
-                            log.error("[BENCHMARK_PRODUCER] Send Exception", e);
+                            logger.error("[BENCHMARK_PRODUCER] Send Exception", e);
                             try {
                                 Thread.sleep(3000);
                             } catch (InterruptedException ignored) {
diff --git a/example/src/main/java/org/apache/rocketmq/example/benchmark/Producer.java b/example/src/main/java/org/apache/rocketmq/example/benchmark/Producer.java
index 24266a7..23896a2 100644
--- a/example/src/main/java/org/apache/rocketmq/example/benchmark/Producer.java
+++ b/example/src/main/java/org/apache/rocketmq/example/benchmark/Producer.java
@@ -27,17 +27,17 @@
 import org.apache.commons.lang3.concurrent.BasicThreadFactory;
 import org.apache.rocketmq.client.exception.MQBrokerException;
 import org.apache.rocketmq.client.exception.MQClientException;
-import org.apache.rocketmq.client.log.ClientLogger;
 import org.apache.rocketmq.client.producer.DefaultMQProducer;
 import org.apache.rocketmq.client.producer.SendCallback;
 import org.apache.rocketmq.client.producer.SendResult;
 import org.apache.rocketmq.common.UtilAll;
 import org.apache.rocketmq.common.message.Message;
-import org.apache.rocketmq.logging.InternalLogger;
 import org.apache.rocketmq.remoting.RPCHook;
 import org.apache.rocketmq.remoting.exception.RemotingException;
 import org.apache.rocketmq.remoting.protocol.RemotingCommand;
 import org.apache.rocketmq.remoting.protocol.SerializeType;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.srvutil.ServerUtil;
 
 import java.util.Arrays;
@@ -53,6 +53,8 @@
 
 public class Producer {
 
+    private static final Logger log = LoggerFactory.getLogger(Producer.class);
+
     private static byte[] msgBody;
     private static final int MAX_LENGTH_ASYNC_QUEUE = 10000;
     private static final int SLEEP_FOR_A_WHILE = 100;
@@ -91,8 +93,6 @@
         }
         msgBody = sb.toString().getBytes(StandardCharsets.UTF_8);
 
-        final InternalLogger log = ClientLogger.getLog();
-
         final ExecutorService sendThreadPool = Executors.newFixedThreadPool(threadCount);
 
         final StatsBenchmarkProducer statsBenchmark = new StatsBenchmarkProducer();
diff --git a/example/src/main/java/org/apache/rocketmq/example/benchmark/timer/TimerProducer.java b/example/src/main/java/org/apache/rocketmq/example/benchmark/timer/TimerProducer.java
index e4b1d87..e1a18dc 100644
--- a/example/src/main/java/org/apache/rocketmq/example/benchmark/timer/TimerProducer.java
+++ b/example/src/main/java/org/apache/rocketmq/example/benchmark/timer/TimerProducer.java
@@ -23,14 +23,14 @@
 import org.apache.commons.lang3.StringUtils;
 import org.apache.rocketmq.client.exception.MQBrokerException;
 import org.apache.rocketmq.client.exception.MQClientException;
-import org.apache.rocketmq.client.log.ClientLogger;
 import org.apache.rocketmq.client.producer.DefaultMQProducer;
 import org.apache.rocketmq.common.ThreadFactoryImpl;
 import org.apache.rocketmq.common.message.Message;
 import org.apache.rocketmq.common.message.MessageConst;
-import org.apache.rocketmq.logging.InternalLogger;
 import org.apache.rocketmq.remoting.common.RemotingHelper;
 import org.apache.rocketmq.remoting.exception.RemotingException;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.srvutil.ServerUtil;
 
 import java.io.UnsupportedEncodingException;
@@ -48,7 +48,7 @@
 import java.util.concurrent.atomic.AtomicLong;
 
 public class TimerProducer {
-    private static final InternalLogger LOGGER = ClientLogger.getLog();
+    private static final Logger log = LoggerFactory.getLogger(TimerProducer.class);
 
     private final String topic;
     private final int threadCount;
@@ -188,17 +188,17 @@
                                 }
                             } catch (RemotingException e) {
                                 statsBenchmark.getSendRequestFailedCount().incrementAndGet();
-                                LOGGER.error("[BENCHMARK_PRODUCER] Send Exception", e);
+                                log.error("[BENCHMARK_PRODUCER] Send Exception", e);
                                 sleep(3000);
                             } catch (InterruptedException e) {
                                 statsBenchmark.getSendRequestFailedCount().incrementAndGet();
                                 sleep(3000);
                             } catch (MQClientException e) {
                                 statsBenchmark.getSendRequestFailedCount().incrementAndGet();
-                                LOGGER.error("[BENCHMARK_PRODUCER] Send Exception", e);
+                                log.error("[BENCHMARK_PRODUCER] Send Exception", e);
                             } catch (MQBrokerException e) {
                                 statsBenchmark.getReceiveResponseFailedCount().incrementAndGet();
-                                LOGGER.error("[BENCHMARK_PRODUCER] Send Exception", e);
+                                log.error("[BENCHMARK_PRODUCER] Send Exception", e);
                                 sleep(3000);
                             }
                         }
diff --git a/example/src/main/java/org/apache/rocketmq/example/rpc/AsyncRequestProducer.java b/example/src/main/java/org/apache/rocketmq/example/rpc/AsyncRequestProducer.java
index 072291d..1d49893 100644
--- a/example/src/main/java/org/apache/rocketmq/example/rpc/AsyncRequestProducer.java
+++ b/example/src/main/java/org/apache/rocketmq/example/rpc/AsyncRequestProducer.java
@@ -18,15 +18,15 @@
 package org.apache.rocketmq.example.rpc;
 
 import org.apache.rocketmq.client.exception.MQClientException;
-import org.apache.rocketmq.client.log.ClientLogger;
 import org.apache.rocketmq.client.producer.DefaultMQProducer;
 import org.apache.rocketmq.client.producer.RequestCallback;
 import org.apache.rocketmq.common.message.Message;
-import org.apache.rocketmq.logging.InternalLogger;
 import org.apache.rocketmq.remoting.common.RemotingHelper;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 public class AsyncRequestProducer {
-    private static final InternalLogger log = ClientLogger.getLog();
+    private static final Logger log = LoggerFactory.getLogger(AsyncRequestProducer.class);
 
     public static void main(String[] args) throws MQClientException, InterruptedException {
         String producerGroup = "please_rename_unique_group_name";
diff --git a/example/src/main/java/org/apache/rocketmq/example/simple/PopPushConsumer.java b/example/src/main/java/org/apache/rocketmq/example/simple/PopPushConsumer.java
deleted file mode 100644
index b2695db..0000000
--- a/example/src/main/java/org/apache/rocketmq/example/simple/PopPushConsumer.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.rocketmq.example.simple;
-
-import java.util.Set;
-import java.util.stream.Collectors;
-import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer;
-import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus;
-import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently;
-import org.apache.rocketmq.common.consumer.ConsumeFromWhere;
-import org.apache.rocketmq.common.message.MessageRequestMode;
-import org.apache.rocketmq.remoting.protocol.body.ClusterInfo;
-import org.apache.rocketmq.remoting.protocol.route.BrokerData;
-import org.apache.rocketmq.tools.admin.DefaultMQAdminExt;
-
-public class PopPushConsumer {
-
-    public static final String CONSUMER_GROUP = "CID_JODIE_1";
-    public static final String TOPIC = "TopicTest";
-
-    // Or use AdminTools directly: mqadmin setConsumeMode -c cluster -t topic -g group -m POP -n 8
-    private static void switchPop() throws Exception {
-        DefaultMQAdminExt mqAdminExt = new DefaultMQAdminExt();
-        mqAdminExt.start();
-
-        ClusterInfo clusterInfo = mqAdminExt.examineBrokerClusterInfo();
-        Set<String> brokerAddrs = clusterInfo.getBrokerAddrTable().values().stream().map(BrokerData::selectBrokerAddr).collect(Collectors.toSet());
-
-        for (String brokerAddr : brokerAddrs) {
-            mqAdminExt.setMessageRequestMode(brokerAddr, TOPIC, CONSUMER_GROUP, MessageRequestMode.POP, 8, 3_000);
-        }
-    }
-
-    public static void main(String[] args) throws Exception {
-        switchPop();
-
-        DefaultMQPushConsumer consumer = new DefaultMQPushConsumer(CONSUMER_GROUP);
-        consumer.subscribe(TOPIC, "*");
-        consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_LAST_OFFSET);
-        consumer.registerMessageListener((MessageListenerConcurrently) (msgs, context) -> {
-            System.out.printf("%s Receive New Messages: %s %n", Thread.currentThread().getName(), msgs);
-            return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
-        });
-        consumer.setClientRebalance(false);
-        consumer.start();
-        System.out.printf("Consumer Started.%n");
-    }
-}
diff --git a/filter/BUILD.bazel b/filter/BUILD.bazel
index 7b6c868..048c3bd 100644
--- a/filter/BUILD.bazel
+++ b/filter/BUILD.bazel
@@ -23,7 +23,6 @@
     deps = [
         "//common",
         "//remoting",
-        "//logging", 
         "//srvutil",
         "@maven//:org_apache_commons_commons_lang3",
         "@maven//:commons_validator_commons_validator",
diff --git a/filter/pom.xml b/filter/pom.xml
index e26c72f..d837291 100644
--- a/filter/pom.xml
+++ b/filter/pom.xml
@@ -36,10 +36,12 @@
         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>rocketmq-common</artifactId>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>rocketmq-srvutil</artifactId>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>com.google.guava</groupId>
diff --git a/store/src/test/resources/logback-test.xml b/filter/src/test/resources/rmq.logback-test.xml
similarity index 64%
copy from store/src/test/resources/logback-test.xml
copy to filter/src/test/resources/rmq.logback-test.xml
index a033816..c3ec0d1 100644
--- a/store/src/test/resources/logback-test.xml
+++ b/filter/src/test/resources/rmq.logback-test.xml
@@ -17,19 +17,20 @@
   -->
 <configuration>
 
-    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
-        <encoder>
-            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n</pattern>
-            <charset class="java.nio.charset.Charset">UTF-8</charset>
-        </encoder>
+    <appender name="CONSOLE" class="org.apache.rocketmq.shade.ch.qos.logback.core.ConsoleAppender">
+        <layout class="org.apache.rocketmq.shade.ch.qos.logback.classic.PatternLayout">
+            <Pattern>
+                %d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n
+            </Pattern>
+        </layout>
     </appender>
 
-    <logger name="org.apache.rocketmq.store" level="WARN" additivity="false">
-        <appender-ref ref="STDOUT"/>
+    <logger name="org.apache.rocketmq" level="error" additivity="false">
+        <appender-ref ref="CONSOLE"/>
     </logger>
 
-    <root level="OFF">
-        <appender-ref ref="STDOUT"/>
+    <root level="error">
+        <appender-ref ref="CONSOLE"/>
     </root>
 
-</configuration>
+</configuration>
\ No newline at end of file
diff --git a/logging/BUILD.bazel b/logging/BUILD.bazel
deleted file mode 100644
index a2380e7..0000000
--- a/logging/BUILD.bazel
+++ /dev/null
@@ -1,24 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-java_library(
-    name = "logging",
-    srcs = glob(["src/main/java/**/*.java"]),
-    deps = [
-        "@maven//:org_slf4j_slf4j_api",
-    ],
-    visibility = ["//visibility:public"],
-)
\ No newline at end of file
diff --git a/logging/pom.xml b/logging/pom.xml
deleted file mode 100644
index 4d879cf..0000000
--- a/logging/pom.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-  -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <groupId>org.apache.rocketmq</groupId>
-        <artifactId>rocketmq-all</artifactId>
-        <version>5.0.1-SNAPSHOT</version>
-    </parent>
-
-    <modelVersion>4.0.0</modelVersion>
-    <packaging>jar</packaging>
-    <artifactId>rocketmq-logging</artifactId>
-    <name>rocketmq-logging ${project.version}</name>
-
-    <properties>
-        <project.root>${basedir}/..</project.root>
-    </properties>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-api</artifactId>
-            <optional>true</optional>
-        </dependency>
-        <dependency>
-            <groupId>ch.qos.logback</groupId>
-            <artifactId>logback-classic</artifactId>
-            <scope>test</scope>
-        </dependency>
-    </dependencies>
-
-</project>
\ No newline at end of file
diff --git a/logging/src/main/java/org/apache/rocketmq/logging/InnerLoggerFactory.java b/logging/src/main/java/org/apache/rocketmq/logging/InnerLoggerFactory.java
deleted file mode 100644
index 114e068..0000000
--- a/logging/src/main/java/org/apache/rocketmq/logging/InnerLoggerFactory.java
+++ /dev/null
@@ -1,482 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.rocketmq.logging;
-
-import org.apache.rocketmq.logging.inner.Logger;
-
-import java.util.HashMap;
-import java.util.Map;
-
-public class InnerLoggerFactory extends InternalLoggerFactory {
-
-    public InnerLoggerFactory() {
-        doRegister();
-    }
-
-    @Override
-    protected InternalLogger getLoggerInstance(String name) {
-        return new InnerLogger(name);
-    }
-
-    @Override
-    protected String getLoggerType() {
-        return LOGGER_INNER;
-    }
-
-    @Override
-    protected void shutdown() {
-        Logger.getRepository().shutdown();
-    }
-
-    public static class InnerLogger implements InternalLogger {
-
-        private Logger logger;
-
-        public InnerLogger(String name) {
-            logger = Logger.getLogger(name);
-        }
-
-        @Override
-        public String getName() {
-            return logger.getName();
-        }
-
-        @Override
-        public void debug(String var1) {
-            logger.debug(var1);
-        }
-
-        @Override
-        public void debug(String var1, Throwable var2) {
-            logger.debug(var1, var2);
-        }
-
-        @Override
-        public void info(String var1) {
-            logger.info(var1);
-        }
-
-        @Override
-        public void info(String var1, Throwable var2) {
-            logger.info(var1, var2);
-        }
-
-        @Override
-        public void warn(String var1) {
-            logger.warn(var1);
-        }
-
-        @Override
-        public void warn(String var1, Throwable var2) {
-            logger.warn(var1, var2);
-        }
-
-        @Override
-        public void error(String var1) {
-            logger.error(var1);
-        }
-
-        @Override
-        public void error(String var1, Throwable var2) {
-            logger.error(var1, var2);
-        }
-
-        @Override
-        public void debug(String var1, Object var2) {
-            FormattingTuple format = MessageFormatter.format(var1, var2);
-            logger.debug(format.getMessage(), format.getThrowable());
-        }
-
-        @Override
-        public void debug(String var1, Object var2, Object var3) {
-            FormattingTuple format = MessageFormatter.format(var1, var2, var3);
-            logger.debug(format.getMessage(), format.getThrowable());
-        }
-
-        @Override
-        public void debug(String var1, Object... var2) {
-            FormattingTuple format = MessageFormatter.arrayFormat(var1, var2);
-            logger.debug(format.getMessage(), format.getThrowable());
-        }
-
-        @Override
-        public void info(String var1, Object var2) {
-            FormattingTuple format = MessageFormatter.format(var1, var2);
-            logger.info(format.getMessage(), format.getThrowable());
-        }
-
-        @Override
-        public void info(String var1, Object var2, Object var3) {
-            FormattingTuple format = MessageFormatter.format(var1, var2, var3);
-            logger.info(format.getMessage(), format.getThrowable());
-        }
-
-        @Override
-        public void info(String var1, Object... var2) {
-            FormattingTuple format = MessageFormatter.arrayFormat(var1, var2);
-            logger.info(format.getMessage(), format.getThrowable());
-        }
-
-        @Override
-        public void warn(String var1, Object var2) {
-            FormattingTuple format = MessageFormatter.format(var1, var2);
-            logger.warn(format.getMessage(), format.getThrowable());
-        }
-
-        @Override
-        public void warn(String var1, Object... var2) {
-            FormattingTuple format = MessageFormatter.arrayFormat(var1, var2);
-            logger.warn(format.getMessage(), format.getThrowable());
-        }
-
-        @Override
-        public void warn(String var1, Object var2, Object var3) {
-            FormattingTuple format = MessageFormatter.format(var1, var2, var3);
-            logger.warn(format.getMessage(), format.getThrowable());
-        }
-
-        @Override
-        public void error(String var1, Object var2) {
-            FormattingTuple format = MessageFormatter.format(var1, var2);
-            logger.warn(format.getMessage(), format.getThrowable());
-        }
-
-        @Override
-        public void error(String var1, Object var2, Object var3) {
-            FormattingTuple format = MessageFormatter.format(var1, var2, var3);
-            logger.warn(format.getMessage(), format.getThrowable());
-        }
-
-        @Override
-        public void error(String var1, Object... var2) {
-            FormattingTuple format = MessageFormatter.arrayFormat(var1, var2);
-            logger.warn(format.getMessage(), format.getThrowable());
-        }
-
-        public Logger getLogger() {
-            return logger;
-        }
-    }
-
-
-    public static class FormattingTuple {
-        private String message;
-        private Throwable throwable;
-        private Object[] argArray;
-
-        public FormattingTuple(String message) {
-            this(message, null, null);
-        }
-
-        public FormattingTuple(String message, Object[] argArray, Throwable throwable) {
-            this.message = message;
-            this.throwable = throwable;
-            if (throwable == null) {
-                this.argArray = argArray;
-            } else {
-                this.argArray = trimmedCopy(argArray);
-            }
-
-        }
-
-        static Object[] trimmedCopy(Object[] argArray) {
-            if (argArray != null && argArray.length != 0) {
-                int trimemdLen = argArray.length - 1;
-                Object[] trimmed = new Object[trimemdLen];
-                System.arraycopy(argArray, 0, trimmed, 0, trimemdLen);
-                return trimmed;
-            } else {
-                throw new IllegalStateException("non-sensical empty or null argument array");
-            }
-        }
-
-        public String getMessage() {
-            return this.message;
-        }
-
-        public Object[] getArgArray() {
-            return this.argArray;
-        }
-
-        public Throwable getThrowable() {
-            return this.throwable;
-        }
-    }
-
-    public static class MessageFormatter {
-
-        public MessageFormatter() {
-        }
-
-        public static FormattingTuple format(String messagePattern, Object arg) {
-            return arrayFormat(messagePattern, new Object[]{arg});
-        }
-
-        public static FormattingTuple format(String messagePattern, Object arg1, Object arg2) {
-            return arrayFormat(messagePattern, new Object[]{arg1, arg2});
-        }
-
-        static Throwable getThrowableCandidate(Object[] argArray) {
-            if (argArray != null && argArray.length != 0) {
-                Object lastEntry = argArray[argArray.length - 1];
-                return lastEntry instanceof Throwable ? (Throwable) lastEntry : null;
-            } else {
-                return null;
-            }
-        }
-
-        public static FormattingTuple arrayFormat(String messagePattern, Object[] argArray) {
-            Throwable throwableCandidate = getThrowableCandidate(argArray);
-            if (messagePattern == null) {
-                return new FormattingTuple(null, argArray, throwableCandidate);
-            } else if (argArray == null) {
-                return new FormattingTuple(messagePattern);
-            } else {
-                int i = 0;
-                StringBuilder sbuf = new StringBuilder(messagePattern.length() + 50);
-
-                int len;
-                for (len = 0; len < argArray.length; ++len) {
-                    int j = messagePattern.indexOf("{}", i);
-                    if (j == -1) {
-                        if (i == 0) {
-                            return new FormattingTuple(messagePattern, argArray, throwableCandidate);
-                        }
-
-                        sbuf.append(messagePattern.substring(i, messagePattern.length()));
-                        return new FormattingTuple(sbuf.toString(), argArray, throwableCandidate);
-                    }
-
-                    if (isEscapeDelimeter(messagePattern, j)) {
-                        if (!isDoubleEscaped(messagePattern, j)) {
-                            --len;
-                            sbuf.append(messagePattern.substring(i, j - 1));
-                            sbuf.append('{');
-                            i = j + 1;
-                        } else {
-                            sbuf.append(messagePattern.substring(i, j - 1));
-                            deeplyAppendParameter(sbuf, argArray[len], null);
-                            i = j + 2;
-                        }
-                    } else {
-                        sbuf.append(messagePattern.substring(i, j));
-                        deeplyAppendParameter(sbuf, argArray[len], null);
-                        i = j + 2;
-                    }
-                }
-
-                sbuf.append(messagePattern.substring(i, messagePattern.length()));
-                if (len < argArray.length - 1) {
-                    return new FormattingTuple(sbuf.toString(), argArray, throwableCandidate);
-                } else {
-                    return new FormattingTuple(sbuf.toString(), argArray, null);
-                }
-            }
-        }
-
-        static boolean isEscapeDelimeter(String messagePattern, int delimeterStartIndex) {
-            if (delimeterStartIndex == 0) {
-                return false;
-            } else {
-                char potentialEscape = messagePattern.charAt(delimeterStartIndex - 1);
-                return potentialEscape == 92;
-            }
-        }
-
-        static boolean isDoubleEscaped(String messagePattern, int delimeterStartIndex) {
-            return delimeterStartIndex >= 2 && messagePattern.charAt(delimeterStartIndex - 2) == 92;
-        }
-
-        private static void deeplyAppendParameter(StringBuilder sbuf, Object o, Map<Object[], Object> seenMap) {
-            if (o == null) {
-                sbuf.append("null");
-            } else {
-                if (!o.getClass().isArray()) {
-                    safeObjectAppend(sbuf, o);
-                } else if (o instanceof boolean[]) {
-                    booleanArrayAppend(sbuf, (boolean[]) o);
-                } else if (o instanceof byte[]) {
-                    byteArrayAppend(sbuf, (byte[]) o);
-                } else if (o instanceof char[]) {
-                    charArrayAppend(sbuf, (char[]) o);
-                } else if (o instanceof short[]) {
-                    shortArrayAppend(sbuf, (short[]) o);
-                } else if (o instanceof int[]) {
-                    intArrayAppend(sbuf, (int[]) o);
-                } else if (o instanceof long[]) {
-                    longArrayAppend(sbuf, (long[]) o);
-                } else if (o instanceof float[]) {
-                    floatArrayAppend(sbuf, (float[]) o);
-                } else if (o instanceof double[]) {
-                    doubleArrayAppend(sbuf, (double[]) o);
-                } else {
-                    objectArrayAppend(sbuf, (Object[]) o, seenMap);
-                }
-
-            }
-        }
-
-        private static void safeObjectAppend(StringBuilder sbuf, Object o) {
-            try {
-                String t = o.toString();
-                sbuf.append(t);
-            } catch (Throwable var3) {
-                System.err.println("RocketMQ InnerLogger: Failed toString() invocation on an object of type [" + o.getClass().getName() + "]");
-                var3.printStackTrace();
-                sbuf.append("[FAILED toString()]");
-            }
-
-        }
-
-        private static void objectArrayAppend(StringBuilder sbuf, Object[] a, Map<Object[], Object> seenMap) {
-            if (seenMap == null) {
-                seenMap = new HashMap<>();
-            }
-            sbuf.append('[');
-            if (!seenMap.containsKey(a)) {
-                seenMap.put(a, null);
-                int len = a.length;
-
-                for (int i = 0; i < len; ++i) {
-                    deeplyAppendParameter(sbuf, a[i], seenMap);
-                    if (i != len - 1) {
-                        sbuf.append(", ");
-                    }
-                }
-
-                seenMap.remove(a);
-            } else {
-                sbuf.append("...");
-            }
-
-            sbuf.append(']');
-        }
-
-        private static void booleanArrayAppend(StringBuilder sbuf, boolean[] a) {
-            sbuf.append('[');
-            int len = a.length;
-
-            for (int i = 0; i < len; ++i) {
-                sbuf.append(a[i]);
-                if (i != len - 1) {
-                    sbuf.append(", ");
-                }
-            }
-
-            sbuf.append(']');
-        }
-
-        private static void byteArrayAppend(StringBuilder sbuf, byte[] a) {
-            sbuf.append('[');
-            int len = a.length;
-
-            for (int i = 0; i < len; ++i) {
-                sbuf.append(a[i]);
-                if (i != len - 1) {
-                    sbuf.append(", ");
-                }
-            }
-
-            sbuf.append(']');
-        }
-
-        private static void charArrayAppend(StringBuilder sbuf, char[] a) {
-            sbuf.append('[');
-            int len = a.length;
-
-            for (int i = 0; i < len; ++i) {
-                sbuf.append(a[i]);
-                if (i != len - 1) {
-                    sbuf.append(", ");
-                }
-            }
-
-            sbuf.append(']');
-        }
-
-        private static void shortArrayAppend(StringBuilder sbuf, short[] a) {
-            sbuf.append('[');
-            int len = a.length;
-
-            for (int i = 0; i < len; ++i) {
-                sbuf.append(a[i]);
-                if (i != len - 1) {
-                    sbuf.append(", ");
-                }
-            }
-
-            sbuf.append(']');
-        }
-
-        private static void intArrayAppend(StringBuilder sbuf, int[] a) {
-            sbuf.append('[');
-            int len = a.length;
-
-            for (int i = 0; i < len; ++i) {
-                sbuf.append(a[i]);
-                if (i != len - 1) {
-                    sbuf.append(", ");
-                }
-            }
-
-            sbuf.append(']');
-        }
-
-        private static void longArrayAppend(StringBuilder sbuf, long[] a) {
-            sbuf.append('[');
-            int len = a.length;
-
-            for (int i = 0; i < len; ++i) {
-                sbuf.append(a[i]);
-                if (i != len - 1) {
-                    sbuf.append(", ");
-                }
-            }
-
-            sbuf.append(']');
-        }
-
-        private static void floatArrayAppend(StringBuilder sbuf, float[] a) {
-            sbuf.append('[');
-            int len = a.length;
-
-            for (int i = 0; i < len; ++i) {
-                sbuf.append(a[i]);
-                if (i != len - 1) {
-                    sbuf.append(", ");
-                }
-            }
-
-            sbuf.append(']');
-        }
-
-        private static void doubleArrayAppend(StringBuilder sbuf, double[] a) {
-            sbuf.append('[');
-            int len = a.length;
-
-            for (int i = 0; i < len; ++i) {
-                sbuf.append(a[i]);
-                if (i != len - 1) {
-                    sbuf.append(", ");
-                }
-            }
-
-            sbuf.append(']');
-        }
-    }
-}
diff --git a/logging/src/main/java/org/apache/rocketmq/logging/InternalLogger.java b/logging/src/main/java/org/apache/rocketmq/logging/InternalLogger.java
deleted file mode 100644
index fae69dd..0000000
--- a/logging/src/main/java/org/apache/rocketmq/logging/InternalLogger.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.rocketmq.logging;
-
-public interface InternalLogger {
-
-    String getName();
-
-    void debug(String var1);
-
-    void debug(String var1, Object var2);
-
-    void debug(String var1, Object var2, Object var3);
-
-    void debug(String var1, Object... var2);
-
-    void debug(String var1, Throwable var2);
-
-    void info(String var1);
-
-    void info(String var1, Object var2);
-
-    void info(String var1, Object var2, Object var3);
-
-    void info(String var1, Object... var2);
-
-    void info(String var1, Throwable var2);
-
-    void warn(String var1);
-
-    void warn(String var1, Object var2);
-
-    void warn(String var1, Object... var2);
-
-    void warn(String var1, Object var2, Object var3);
-
-    void warn(String var1, Throwable var2);
-
-    void error(String var1);
-
-    void error(String var1, Object var2);
-
-    void error(String var1, Object var2, Object var3);
-
-    void error(String var1, Object... var2);
-
-    void error(String var1, Throwable var2);
-}
diff --git a/logging/src/main/java/org/apache/rocketmq/logging/InternalLoggerFactory.java b/logging/src/main/java/org/apache/rocketmq/logging/InternalLoggerFactory.java
deleted file mode 100644
index 9c21f66..0000000
--- a/logging/src/main/java/org/apache/rocketmq/logging/InternalLoggerFactory.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.rocketmq.logging;
-
-import java.util.concurrent.ConcurrentHashMap;
-
-public abstract class InternalLoggerFactory {
-
-    public static final String LOGGER_SLF4J = "slf4j";
-
-    public static final String LOGGER_INNER = "inner";
-
-    public static final String DEFAULT_LOGGER = LOGGER_SLF4J;
-
-    public static final String BROKER_CONTAINER_NAME = "BrokerContainer";
-
-    /**
-     * Loggers with following name will be directed to default logger for LogTail parser.
-     */
-    public static final String CONSUMER_STATS_LOGGER_NAME = "RocketmqConsumerStats";
-    public static final String COMMERCIAL_LOGGER_NAME = "RocketmqCommercial";
-    public static final String ACCOUNT_LOGGER_NAME = "RocketmqAccount";
-
-    private static String loggerType = null;
-
-    public static final ThreadLocal<String> BROKER_IDENTITY = new ThreadLocal<>();
-
-    private static ConcurrentHashMap<String, InternalLoggerFactory> loggerFactoryCache = new ConcurrentHashMap<>();
-
-    public static InternalLogger getLogger(Class clazz) {
-        return getLogger(clazz.getName());
-    }
-
-    public static InternalLogger getLogger(String name) {
-        return getLoggerFactory().getLoggerInstance(name);
-    }
-
-    private static InternalLoggerFactory getLoggerFactory() {
-        InternalLoggerFactory internalLoggerFactory = null;
-        if (loggerType != null) {
-            internalLoggerFactory = loggerFactoryCache.get(loggerType);
-        }
-        if (internalLoggerFactory == null) {
-            internalLoggerFactory = loggerFactoryCache.get(DEFAULT_LOGGER);
-        }
-        if (internalLoggerFactory == null) {
-            internalLoggerFactory = loggerFactoryCache.get(LOGGER_INNER);
-        }
-        if (internalLoggerFactory == null) {
-            throw new RuntimeException("[RocketMQ] Logger init failed, please check logger");
-        }
-        return internalLoggerFactory;
-    }
-
-    public static void setCurrentLoggerType(String type) {
-        loggerType = type;
-    }
-
-    static {
-        try {
-            new Slf4jLoggerFactory();
-        } catch (Throwable e) {
-            //ignore
-        }
-        try {
-            new InnerLoggerFactory();
-        } catch (Throwable e) {
-            //ignore
-        }
-    }
-
-    protected void doRegister() {
-        String loggerType = getLoggerType();
-        if (loggerFactoryCache.get(loggerType) != null) {
-            return;
-        }
-        loggerFactoryCache.put(loggerType, this);
-    }
-
-    protected abstract void shutdown();
-
-    protected abstract InternalLogger getLoggerInstance(String name);
-
-    protected abstract String getLoggerType();
-}
diff --git a/logging/src/main/java/org/apache/rocketmq/logging/Slf4jLoggerFactory.java b/logging/src/main/java/org/apache/rocketmq/logging/Slf4jLoggerFactory.java
deleted file mode 100644
index f1f727c..0000000
--- a/logging/src/main/java/org/apache/rocketmq/logging/Slf4jLoggerFactory.java
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.rocketmq.logging;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class Slf4jLoggerFactory extends InternalLoggerFactory {
-
-    public Slf4jLoggerFactory() {
-        LoggerFactory.getILoggerFactory();
-        doRegister();
-    }
-
-    @Override
-    protected String getLoggerType() {
-        return InternalLoggerFactory.LOGGER_SLF4J;
-    }
-
-    @Override
-    protected InternalLogger getLoggerInstance(String name) {
-        return new Slf4jLogger(name);
-    }
-
-    @Override
-    protected void shutdown() {
-
-    }
-
-    public static class Slf4jLogger implements InternalLogger {
-        private static final Pattern PATTERN = Pattern.compile("#.*#");
-
-        private final String loggerSuffix;
-        private final Logger defaultLogger;
-
-        private final Map<String, Logger> loggerMap = new HashMap<>();
-
-        public Slf4jLogger(String loggerSuffix) {
-            this.loggerSuffix = loggerSuffix;
-            this.defaultLogger = LoggerFactory.getLogger(loggerSuffix);
-        }
-
-        private Logger getLogger() {
-            if (loggerSuffix.equals(ACCOUNT_LOGGER_NAME)
-                || loggerSuffix.equals(CONSUMER_STATS_LOGGER_NAME)
-                || loggerSuffix.equals(COMMERCIAL_LOGGER_NAME)) {
-                return defaultLogger;
-            }
-            String brokerIdentity = InnerLoggerFactory.BROKER_IDENTITY.get();
-            if (brokerIdentity == null) {
-                Matcher m = PATTERN.matcher(Thread.currentThread().getName());
-                if (m.find()) {
-                    String match = m.group();
-                    brokerIdentity = match.substring(1, match.length() - 1);
-                }
-            }
-            if (InnerLoggerFactory.BROKER_CONTAINER_NAME.equals(brokerIdentity)) {
-                return defaultLogger;
-            }
-            if (brokerIdentity != null) {
-                if (!loggerMap.containsKey(brokerIdentity)) {
-                    loggerMap.put(brokerIdentity, LoggerFactory.getLogger("#" + brokerIdentity + "#" + loggerSuffix));
-                }
-                return loggerMap.get(brokerIdentity);
-            }
-            return defaultLogger;
-        }
-
-        @Override
-        public String getName() {
-            return getLogger().getName();
-        }
-
-        @Override
-        public void debug(String s) {
-            getLogger().debug(s);
-        }
-
-        @Override
-        public void debug(String s, Object o) {
-            getLogger().debug(s, o);
-        }
-
-        @Override
-        public void debug(String s, Object o, Object o1) {
-            getLogger().debug(s, o, o1);
-        }
-
-        @Override
-        public void debug(String s, Object... objects) {
-            getLogger().debug(s, objects);
-        }
-
-        @Override
-        public void debug(String s, Throwable throwable) {
-            getLogger().debug(s, throwable);
-        }
-
-        @Override
-        public void info(String s) {
-            getLogger().info(s);
-        }
-
-        @Override
-        public void info(String s, Object o) {
-            getLogger().info(s, o);
-        }
-
-        @Override
-        public void info(String s, Object o, Object o1) {
-            getLogger().info(s, o, o1);
-        }
-
-        @Override
-        public void info(String s, Object... objects) {
-            getLogger().info(s, objects);
-        }
-
-        @Override
-        public void info(String s, Throwable throwable) {
-            getLogger().info(s, throwable);
-        }
-
-        @Override
-        public void warn(String s) {
-            getLogger().warn(s);
-        }
-
-        @Override
-        public void warn(String s, Object o) {
-            getLogger().warn(s, o);
-        }
-
-        @Override
-        public void warn(String s, Object... objects) {
-            getLogger().warn(s, objects);
-        }
-
-        @Override
-        public void warn(String s, Object o, Object o1) {
-            getLogger().warn(s, o, o1);
-        }
-
-        @Override
-        public void warn(String s, Throwable throwable) {
-            getLogger().warn(s, throwable);
-        }
-
-        @Override
-        public void error(String s) {
-            getLogger().error(s);
-        }
-
-        @Override
-        public void error(String s, Object o) {
-            getLogger().error(s, o);
-        }
-
-        @Override
-        public void error(String s, Object o, Object o1) {
-            getLogger().error(s, o, o1);
-        }
-
-        @Override
-        public void error(String s, Object... objects) {
-            getLogger().error(s, objects);
-        }
-
-        @Override
-        public void error(String s, Throwable throwable) {
-            getLogger().error(s, throwable);
-        }
-    }
-}
diff --git a/logging/src/main/java/org/apache/rocketmq/logging/inner/Appender.java b/logging/src/main/java/org/apache/rocketmq/logging/inner/Appender.java
deleted file mode 100755
index d40d6cb..0000000
--- a/logging/src/main/java/org/apache/rocketmq/logging/inner/Appender.java
+++ /dev/null
@@ -1,228 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.rocketmq.logging.inner;
-
-
-import java.io.InterruptedIOException;
-import java.util.Enumeration;
-import java.util.Vector;
-
-public abstract class Appender {
-
-    public static final int CODE_WRITE_FAILURE = 1;
-    public static final int CODE_FLUSH_FAILURE = 2;
-    public static final int CODE_CLOSE_FAILURE = 3;
-    public static final int CODE_FILE_OPEN_FAILURE = 4;
-
-    public final static String LINE_SEP = System.getProperty("line.separator");
-
-    boolean firstTime = true;
-
-    protected Layout layout;
-
-    protected String name;
-
-    protected boolean closed = false;
-
-    public void activateOptions() {
-    }
-
-    abstract protected void append(LoggingEvent event);
-
-    public void finalize() {
-        try {
-            super.finalize();
-        } catch (Throwable throwable) {
-            SysLogger.error("Finalizing appender named [" + name + "]. error", throwable);
-        }
-        if (this.closed) {
-            return;
-        }
-
-        SysLogger.debug("Finalizing appender named [" + name + "].");
-        close();
-    }
-
-    public Layout getLayout() {
-        return layout;
-    }
-
-    public final String getName() {
-        return this.name;
-    }
-
-    public synchronized void doAppend(LoggingEvent event) {
-        if (closed) {
-            SysLogger.error("Attempted to append to closed appender named [" + name + "].");
-            return;
-        }
-        this.append(event);
-    }
-
-    public void setLayout(Layout layout) {
-        this.layout = layout;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public abstract void close();
-
-    public void handleError(String message, Exception e, int errorCode) {
-        if (e instanceof InterruptedIOException || e instanceof InterruptedException) {
-            Thread.currentThread().interrupt();
-        }
-        if (firstTime) {
-            SysLogger.error(message + " code:" + errorCode, e);
-            firstTime = false;
-        }
-    }
-
-    public void handleError(String message) {
-        if (firstTime) {
-            SysLogger.error(message);
-            firstTime = false;
-        }
-    }
-
-
-    public interface AppenderPipeline {
-
-        void addAppender(Appender newAppender);
-
-        Enumeration getAllAppenders();
-
-        Appender getAppender(String name);
-
-        boolean isAttached(Appender appender);
-
-        void removeAllAppenders();
-
-        void removeAppender(Appender appender);
-
-        void removeAppender(String name);
-    }
-
-
-    public static class AppenderPipelineImpl implements AppenderPipeline {
-
-
-        protected Vector<Appender> appenderList;
-
-        public void addAppender(Appender newAppender) {
-            if (newAppender == null) {
-                return;
-            }
-
-            if (appenderList == null) {
-                appenderList = new Vector<>(1);
-            }
-            if (!appenderList.contains(newAppender)) {
-                appenderList.addElement(newAppender);
-            }
-        }
-
-        public int appendLoopOnAppenders(LoggingEvent event) {
-            int size = 0;
-            Appender appender;
-
-            if (appenderList != null) {
-                size = appenderList.size();
-                for (int i = 0; i < size; i++) {
-                    appender = appenderList.elementAt(i);
-                    appender.doAppend(event);
-                }
-            }
-            return size;
-        }
-
-        public Enumeration getAllAppenders() {
-            if (appenderList == null) {
-                return null;
-            } else {
-                return appenderList.elements();
-            }
-        }
-
-        public Appender getAppender(String name) {
-            if (appenderList == null || name == null) {
-                return null;
-            }
-
-            int size = appenderList.size();
-            Appender appender;
-            for (int i = 0; i < size; i++) {
-                appender = appenderList.elementAt(i);
-                if (name.equals(appender.getName())) {
-                    return appender;
-                }
-            }
-            return null;
-        }
-
-        public boolean isAttached(Appender appender) {
-            if (appenderList == null || appender == null) {
-                return false;
-            }
-
-            int size = appenderList.size();
-            Appender a;
-            for (int i = 0; i < size; i++) {
-                a = appenderList.elementAt(i);
-                if (a == appender) {
-                    return true;
-                }
-            }
-            return false;
-        }
-
-        public void removeAllAppenders() {
-            if (appenderList != null) {
-                int len = appenderList.size();
-                for (int i = 0; i < len; i++) {
-                    Appender a = appenderList.elementAt(i);
-                    a.close();
-                }
-                appenderList.removeAllElements();
-                appenderList = null;
-            }
-        }
-
-        public void removeAppender(Appender appender) {
-            if (appender == null || appenderList == null) {
-                return;
-            }
-            appenderList.removeElement(appender);
-        }
-
-        public void removeAppender(String name) {
-            if (name == null || appenderList == null) {
-                return;
-            }
-            int size = appenderList.size();
-            for (int i = 0; i < size; i++) {
-                if (name.equals((appenderList.elementAt(i)).getName())) {
-                    appenderList.removeElementAt(i);
-                    break;
-                }
-            }
-        }
-
-    }
-}
diff --git a/logging/src/main/java/org/apache/rocketmq/logging/inner/Layout.java b/logging/src/main/java/org/apache/rocketmq/logging/inner/Layout.java
deleted file mode 100644
index 7ea3561..0000000
--- a/logging/src/main/java/org/apache/rocketmq/logging/inner/Layout.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.rocketmq.logging.inner;
-
-public abstract class Layout {
-
-    public abstract String format(LoggingEvent event);
-
-    public String getContentType() {
-        return "text/plain";
-    }
-
-    public String getHeader() {
-        return null;
-    }
-
-    public String getFooter() {
-        return null;
-    }
-
-
-    abstract public boolean ignoresThrowable();
-
-}
\ No newline at end of file
diff --git a/logging/src/main/java/org/apache/rocketmq/logging/inner/Level.java b/logging/src/main/java/org/apache/rocketmq/logging/inner/Level.java
deleted file mode 100755
index d647adb..0000000
--- a/logging/src/main/java/org/apache/rocketmq/logging/inner/Level.java
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.rocketmq.logging.inner;
-
-import java.io.Serializable;
-
-public class Level implements Serializable {
-
-    transient int level;
-    transient String levelStr;
-    transient int syslogEquivalent;
-
-    public final static int OFF_INT = Integer.MAX_VALUE;
-    public final static int ERROR_INT = 40000;
-    public final static int WARN_INT = 30000;
-    public final static int INFO_INT = 20000;
-    public final static int DEBUG_INT = 10000;
-    public final static int ALL_INT = Integer.MIN_VALUE;
-
-
-    private static final String ALL_NAME = "ALL";
-
-    private static final String DEBUG_NAME = "DEBUG";
-
-    private static final String INFO_NAME = "INFO";
-
-    private static final String WARN_NAME = "WARN";
-
-    private static final String ERROR_NAME = "ERROR";
-
-    private static final String OFF_NAME = "OFF";
-
-    final static public Level OFF = new Level(OFF_INT, OFF_NAME, 0);
-
-    final static public Level ERROR = new Level(ERROR_INT, ERROR_NAME, 3);
-
-    final static public Level WARN = new Level(WARN_INT, WARN_NAME, 4);
-
-    final static public Level INFO = new Level(INFO_INT, INFO_NAME, 6);
-
-    final static public Level DEBUG = new Level(DEBUG_INT, DEBUG_NAME, 7);
-
-    final static public Level ALL = new Level(ALL_INT, ALL_NAME, 7);
-
-    static final long serialVersionUID = 3491141966387921974L;
-
-    protected Level(int level, String levelStr, int syslogEquivalent) {
-        this.level = level;
-        this.levelStr = levelStr;
-        this.syslogEquivalent = syslogEquivalent;
-    }
-
-    public static Level toLevel(String sArg) {
-        return toLevel(sArg, Level.DEBUG);
-    }
-
-    public static Level toLevel(int val) {
-        return toLevel(val, Level.DEBUG);
-    }
-
-    public static Level toLevel(int val, Level defaultLevel) {
-        switch (val) {
-            case ALL_INT:
-                return ALL;
-            case DEBUG_INT:
-                return Level.DEBUG;
-            case INFO_INT:
-                return Level.INFO;
-            case WARN_INT:
-                return Level.WARN;
-            case ERROR_INT:
-                return Level.ERROR;
-            case OFF_INT:
-                return OFF;
-            default:
-                return defaultLevel;
-        }
-    }
-
-    public static Level toLevel(String sArg, Level defaultLevel) {
-        if (sArg == null) {
-            return defaultLevel;
-        }
-        String s = sArg.toUpperCase();
-
-        if (s.equals(ALL_NAME)) {
-            return Level.ALL;
-        }
-        if (s.equals(DEBUG_NAME)) {
-            return Level.DEBUG;
-        }
-        if (s.equals(INFO_NAME)) {
-            return Level.INFO;
-        }
-        if (s.equals(WARN_NAME)) {
-            return Level.WARN;
-        }
-        if (s.equals(ERROR_NAME)) {
-            return Level.ERROR;
-        }
-        if (s.equals(OFF_NAME)) {
-            return Level.OFF;
-        }
-        return defaultLevel;
-    }
-
-
-    public boolean equals(Object o) {
-        if (o instanceof Level) {
-            Level r = (Level) o;
-            return this.level == r.level;
-        } else {
-            return false;
-        }
-    }
-
-    @Override
-    public int hashCode() {
-        int result = level;
-        result = 31 * result + (levelStr != null ? levelStr.hashCode() : 0);
-        result = 31 * result + syslogEquivalent;
-        return result;
-    }
-
-    public boolean isGreaterOrEqual(Level r) {
-        return level >= r.level;
-    }
-
-    final public String toString() {
-        return levelStr;
-    }
-
-    public final int toInt() {
-        return level;
-    }
-
-}
diff --git a/logging/src/main/java/org/apache/rocketmq/logging/inner/Logger.java b/logging/src/main/java/org/apache/rocketmq/logging/inner/Logger.java
deleted file mode 100755
index 7584ea3..0000000
--- a/logging/src/main/java/org/apache/rocketmq/logging/inner/Logger.java
+++ /dev/null
@@ -1,467 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.rocketmq.logging.inner;
-
-import java.util.Enumeration;
-import java.util.Hashtable;
-import java.util.Vector;
-
-
-public class Logger implements Appender.AppenderPipeline {
-
-    private static final String FQCN = Logger.class.getName();
-
-    private static final DefaultLoggerRepository REPOSITORY = new DefaultLoggerRepository(new RootLogger(Level.DEBUG));
-
-    public static LoggerRepository getRepository() {
-        return REPOSITORY;
-    }
-
-    private String name;
-
-    volatile private Level level;
-
-    volatile private Logger parent;
-
-    Appender.AppenderPipelineImpl appenderPipeline;
-
-    private boolean additive = true;
-
-    private Logger(String name) {
-        this.name = name;
-    }
-
-    static public Logger getLogger(String name) {
-        return getRepository().getLogger(name);
-    }
-
-    static public Logger getLogger(Class clazz) {
-        return getRepository().getLogger(clazz.getName());
-    }
-
-    public static Logger getRootLogger() {
-        return getRepository().getRootLogger();
-    }
-
-    synchronized public void addAppender(Appender newAppender) {
-        if (appenderPipeline == null) {
-            appenderPipeline = new Appender.AppenderPipelineImpl();
-        }
-        appenderPipeline.addAppender(newAppender);
-    }
-
-    public void callAppenders(LoggingEvent event) {
-        int writes = 0;
-
-        for (Logger logger = this; logger != null; logger = logger.parent) {
-            synchronized (logger) {
-                if (logger.appenderPipeline != null) {
-                    writes += logger.appenderPipeline.appendLoopOnAppenders(event);
-                }
-                if (!logger.additive) {
-                    break;
-                }
-            }
-        }
-
-        if (writes == 0) {
-            getRepository().emitNoAppenderWarning(this);
-        }
-    }
-
-    synchronized void closeNestedAppenders() {
-        Enumeration enumeration = this.getAllAppenders();
-        if (enumeration != null) {
-            while (enumeration.hasMoreElements()) {
-                Appender a = (Appender) enumeration.nextElement();
-                if (a instanceof Appender.AppenderPipeline) {
-                    a.close();
-                }
-            }
-        }
-    }
-
-    public void debug(Object message) {
-        if (getRepository().isDisabled(Level.DEBUG_INT)) {
-            return;
-        }
-        if (Level.DEBUG.isGreaterOrEqual(this.getEffectiveLevel())) {
-            forcedLog(FQCN, Level.DEBUG, message, null);
-        }
-    }
-
-
-    public void debug(Object message, Throwable t) {
-        if (getRepository().isDisabled(Level.DEBUG_INT)) {
-            return;
-        }
-        if (Level.DEBUG.isGreaterOrEqual(this.getEffectiveLevel())) {
-            forcedLog(FQCN, Level.DEBUG, message, t);
-        }
-    }
-
-
-    public void error(Object message) {
-        if (getRepository().isDisabled(Level.ERROR_INT)) {
-            return;
-        }
-        if (Level.ERROR.isGreaterOrEqual(this.getEffectiveLevel())) {
-            forcedLog(FQCN, Level.ERROR, message, null);
-        }
-    }
-
-    public void error(Object message, Throwable t) {
-        if (getRepository().isDisabled(Level.ERROR_INT)) {
-            return;
-        }
-        if (Level.ERROR.isGreaterOrEqual(this.getEffectiveLevel())) {
-            forcedLog(FQCN, Level.ERROR, message, t);
-        }
-
-    }
-
-
-    protected void forcedLog(String fqcn, Level level, Object message, Throwable t) {
-        callAppenders(new LoggingEvent(fqcn, this, level, message, t));
-    }
-
-
-    synchronized public Enumeration getAllAppenders() {
-        if (appenderPipeline == null) {
-            return null;
-        } else {
-            return appenderPipeline.getAllAppenders();
-        }
-    }
-
-    synchronized public Appender getAppender(String name) {
-        if (appenderPipeline == null || name == null) {
-            return null;
-        }
-
-        return appenderPipeline.getAppender(name);
-    }
-
-    public Level getEffectiveLevel() {
-        for (Logger c = this; c != null; c = c.parent) {
-            if (c.level != null) {
-                return c.level;
-            }
-        }
-        return null;
-    }
-
-    public final String getName() {
-        return name;
-    }
-
-    final public Level getLevel() {
-        return this.level;
-    }
-
-
-    public void info(Object message) {
-        if (getRepository().isDisabled(Level.INFO_INT)) {
-            return;
-        }
-        if (Level.INFO.isGreaterOrEqual(this.getEffectiveLevel())) {
-            forcedLog(FQCN, Level.INFO, message, null);
-        }
-    }
-
-    public void info(Object message, Throwable t) {
-        if (getRepository().isDisabled(Level.INFO_INT)) {
-            return;
-        }
-        if (Level.INFO.isGreaterOrEqual(this.getEffectiveLevel())) {
-            forcedLog(FQCN, Level.INFO, message, t);
-        }
-    }
-
-    public boolean isAttached(Appender appender) {
-        return appender != null && appenderPipeline != null && appenderPipeline.isAttached(appender);
-    }
-
-    synchronized public void removeAllAppenders() {
-        if (appenderPipeline != null) {
-            appenderPipeline.removeAllAppenders();
-            appenderPipeline = null;
-        }
-    }
-
-    synchronized public void removeAppender(Appender appender) {
-        if (appender == null || appenderPipeline == null) {
-            return;
-        }
-        appenderPipeline.removeAppender(appender);
-    }
-
-    synchronized public void removeAppender(String name) {
-        if (name == null || appenderPipeline == null) {
-            return;
-        }
-        appenderPipeline.removeAppender(name);
-    }
-
-    public void setAdditivity(boolean additive) {
-        this.additive = additive;
-    }
-
-    public void setLevel(Level level) {
-        this.level = level;
-    }
-
-    public void warn(Object message) {
-        if (getRepository().isDisabled(Level.WARN_INT)) {
-            return;
-        }
-
-        if (Level.WARN.isGreaterOrEqual(this.getEffectiveLevel())) {
-            forcedLog(FQCN, Level.WARN, message, null);
-        }
-    }
-
-    public void warn(Object message, Throwable t) {
-        if (getRepository().isDisabled(Level.WARN_INT)) {
-            return;
-        }
-        if (Level.WARN.isGreaterOrEqual(this.getEffectiveLevel())) {
-            forcedLog(FQCN, Level.WARN, message, t);
-        }
-    }
-
-    public interface LoggerRepository {
-
-        boolean isDisabled(int level);
-
-        void setLogLevel(Level level);
-
-        void emitNoAppenderWarning(Logger cat);
-
-        Level getLogLevel();
-
-        Logger getLogger(String name);
-
-        Logger getRootLogger();
-
-        Logger exists(String name);
-
-        void shutdown();
-
-        Enumeration getCurrentLoggers();
-    }
-
-    public static class ProvisionNode extends Vector<Logger> {
-
-        ProvisionNode(Logger logger) {
-            super();
-            addElement(logger);
-        }
-    }
-
-    public static class DefaultLoggerRepository implements LoggerRepository {
-
-        final Hashtable<CategoryKey,Object> ht = new Hashtable<>();
-        Logger root;
-
-        int logLevelInt;
-        Level logLevel;
-
-        boolean emittedNoAppenderWarning = false;
-
-        public DefaultLoggerRepository(Logger root) {
-            this.root = root;
-            setLogLevel(Level.ALL);
-        }
-
-        public void emitNoAppenderWarning(Logger cat) {
-            if (!this.emittedNoAppenderWarning) {
-                SysLogger.warn("No appenders could be found for logger (" + cat.getName() + ").");
-                SysLogger.warn("Please initialize the logger system properly.");
-                this.emittedNoAppenderWarning = true;
-            }
-        }
-
-        public Logger exists(String name) {
-            Object o = ht.get(new CategoryKey(name));
-            if (o instanceof Logger) {
-                return (Logger) o;
-            } else {
-                return null;
-            }
-        }
-
-        public void setLogLevel(Level l) {
-            if (l != null) {
-                logLevelInt = l.level;
-                logLevel = l;
-            }
-        }
-
-        public Level getLogLevel() {
-            return logLevel;
-        }
-
-
-        public Logger getLogger(String name) {
-            CategoryKey key = new CategoryKey(name);
-            Logger logger;
-
-            synchronized (ht) {
-                Object o = ht.get(key);
-                if (o == null) {
-                    logger = makeNewLoggerInstance(name);
-                    ht.put(key, logger);
-                    updateParents(logger);
-                    return logger;
-                } else if (o instanceof Logger) {
-                    return (Logger) o;
-                } else if (o instanceof ProvisionNode) {
-                    logger = makeNewLoggerInstance(name);
-                    ht.put(key, logger);
-                    updateChildren((ProvisionNode) o, logger);
-                    updateParents(logger);
-                    return logger;
-                } else {
-                    return null;
-                }
-            }
-        }
-
-        public Logger makeNewLoggerInstance(String name) {
-            return new Logger(name);
-        }
-
-        public Enumeration getCurrentLoggers() {
-            Vector<Logger> loggers = new Vector<>(ht.size());
-
-            Enumeration elems = ht.elements();
-            while (elems.hasMoreElements()) {
-                Object o = elems.nextElement();
-                if (o instanceof Logger) {
-                    Logger logger = (Logger)o;
-                    loggers.addElement(logger);
-                }
-            }
-            return loggers.elements();
-        }
-
-
-        public Logger getRootLogger() {
-            return root;
-        }
-
-        public boolean isDisabled(int level) {
-            return logLevelInt > level;
-        }
-
-
-        public void shutdown() {
-            Logger root = getRootLogger();
-            root.closeNestedAppenders();
-
-            synchronized (ht) {
-                Enumeration cats = this.getCurrentLoggers();
-                while (cats.hasMoreElements()) {
-                    Logger c = (Logger) cats.nextElement();
-                    c.closeNestedAppenders();
-                }
-                root.removeAllAppenders();
-            }
-        }
-
-
-        private void updateParents(Logger cat) {
-            String name = cat.name;
-            int length = name.length();
-            boolean parentFound = false;
-
-            for (int i = name.lastIndexOf('.', length - 1); i >= 0;
-                 i = name.lastIndexOf('.', i - 1)) {
-                String substr = name.substring(0, i);
-
-                CategoryKey key = new CategoryKey(substr);
-                Object o = ht.get(key);
-                if (o == null) {
-                    ht.put(key, new ProvisionNode(cat));
-                } else if (o instanceof Logger) {
-                    parentFound = true;
-                    cat.parent = (Logger) o;
-                    break;
-                } else if (o instanceof ProvisionNode) {
-                    ((ProvisionNode) o).addElement(cat);
-                } else {
-                    Exception e = new IllegalStateException("unexpected object type " + o.getClass() + " in ht.");
-                    e.printStackTrace();
-                }
-            }
-            if (!parentFound) {
-                cat.parent = root;
-            }
-        }
-
-        private void updateChildren(ProvisionNode pn, Logger logger) {
-            final int last = pn.size();
-
-            for (int i = 0; i < last; i++) {
-                Logger l = pn.elementAt(i);
-                if (!l.parent.name.startsWith(logger.name)) {
-                    logger.parent = l.parent;
-                    l.parent = logger;
-                }
-            }
-        }
-
-        private class CategoryKey {
-
-            String name;
-            int hashCache;
-
-            CategoryKey(String name) {
-                this.name = name;
-                hashCache = name.hashCode();
-            }
-
-            final public int hashCode() {
-                return hashCache;
-            }
-
-            final public boolean equals(Object o) {
-                if (this == o) {
-                    return true;
-                }
-
-                if (o != null && o instanceof CategoryKey) {
-                    CategoryKey cc = (CategoryKey) o;
-                    return name.equals(cc.name);
-                } else {
-                    return false;
-                }
-            }
-        }
-
-    }
-
-    public static class RootLogger extends Logger {
-
-        public RootLogger(Level level) {
-            super("root");
-            setLevel(level);
-        }
-    }
-}
diff --git a/logging/src/main/java/org/apache/rocketmq/logging/inner/LoggingBuilder.java b/logging/src/main/java/org/apache/rocketmq/logging/inner/LoggingBuilder.java
deleted file mode 100644
index ea669cf..0000000
--- a/logging/src/main/java/org/apache/rocketmq/logging/inner/LoggingBuilder.java
+++ /dev/null
@@ -1,1231 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.rocketmq.logging.inner;
-
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.FilterWriter;
-import java.io.IOException;
-import java.io.InterruptedIOException;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.io.Writer;
-import java.nio.charset.StandardCharsets;
-import java.text.MessageFormat;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Collection;
-import java.util.Date;
-import java.util.Enumeration;
-import java.util.GregorianCalendar;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.TimeZone;
-
-public class LoggingBuilder {
-
-    public static final String SYSTEM_OUT = "System.out";
-    public static final String SYSTEM_ERR = "System.err";
-
-    public static final String LOGGING_ENCODING = "rocketmq.logging.inner.encoding";
-    public static final String ENCODING = System.getProperty(LOGGING_ENCODING, "UTF-8");
-
-    public static AppenderBuilder newAppenderBuilder() {
-        return new AppenderBuilder();
-    }
-
-    public static class AppenderBuilder {
-        private AsyncAppender asyncAppender;
-
-        private Appender appender = null;
-
-        private AppenderBuilder() {
-
-        }
-
-        public AppenderBuilder withLayout(Layout layout) {
-            appender.setLayout(layout);
-            return this;
-        }
-
-        public AppenderBuilder withName(String name) {
-            appender.setName(name);
-            return this;
-        }
-
-        public AppenderBuilder withConsoleAppender(String target) {
-            ConsoleAppender consoleAppender = new ConsoleAppender();
-            consoleAppender.setTarget(target);
-            consoleAppender.activateOptions();
-            this.appender = consoleAppender;
-            return this;
-        }
-
-        public AppenderBuilder withFileAppender(String file) {
-            FileAppender appender = new FileAppender();
-            appender.setFile(file);
-            appender.setAppend(true);
-            appender.setBufferedIO(false);
-            appender.setEncoding(ENCODING);
-            appender.setImmediateFlush(true);
-            appender.activateOptions();
-            this.appender = appender;
-            return this;
-        }
-
-        public AppenderBuilder withRollingFileAppender(String file, String maxFileSize, int maxFileIndex) {
-            RollingFileAppender appender = new RollingFileAppender();
-            appender.setFile(file);
-            appender.setAppend(true);
-            appender.setBufferedIO(false);
-            appender.setEncoding(ENCODING);
-            appender.setImmediateFlush(true);
-            appender.setMaximumFileSize(Integer.parseInt(maxFileSize));
-            appender.setMaxBackupIndex(maxFileIndex);
-            appender.activateOptions();
-            this.appender = appender;
-            return this;
-        }
-
-        public AppenderBuilder withDailyFileRollingAppender(String file, String datePattern) {
-            DailyRollingFileAppender appender = new DailyRollingFileAppender();
-            appender.setFile(file);
-            appender.setAppend(true);
-            appender.setBufferedIO(false);
-            appender.setEncoding(ENCODING);
-            appender.setImmediateFlush(true);
-            appender.setDatePattern(datePattern);
-            appender.activateOptions();
-            this.appender = appender;
-            return this;
-        }
-
-        public AppenderBuilder withAsync(boolean blocking, int buffSize) {
-            AsyncAppender asyncAppender = new AsyncAppender();
-            asyncAppender.setBlocking(blocking);
-            asyncAppender.setBufferSize(buffSize);
-            this.asyncAppender = asyncAppender;
-            return this;
-        }
-
-        public Appender build() {
-            if (appender == null) {
-                throw new RuntimeException("please specify appender first");
-            }
-            if (asyncAppender != null) {
-                asyncAppender.addAppender(appender);
-                return asyncAppender;
-            } else {
-                return appender;
-            }
-        }
-    }
-
-    public static class AsyncAppender extends Appender implements Appender.AppenderPipeline {
-
-        public static final int DEFAULT_BUFFER_SIZE = 128;
-
-        private final List<LoggingEvent> buffer = new ArrayList<>();
-
-        private final Map<String, DiscardSummary> discardMap = new HashMap<>();
-
-        private int bufferSize = DEFAULT_BUFFER_SIZE;
-
-        private final AppenderPipelineImpl appenderPipeline;
-
-        private final Thread dispatcher;
-
-        private boolean blocking = true;
-
-        public AsyncAppender() {
-            appenderPipeline = new AppenderPipelineImpl();
-
-            dispatcher = new Thread(new Dispatcher(this, buffer, discardMap, appenderPipeline));
-
-            dispatcher.setDaemon(true);
-
-            dispatcher.setName("AsyncAppender-Dispatcher-" + dispatcher.getName());
-            dispatcher.start();
-        }
-
-        public void addAppender(final Appender newAppender) {
-            synchronized (appenderPipeline) {
-                appenderPipeline.addAppender(newAppender);
-            }
-        }
-
-        public void append(final LoggingEvent event) {
-            if (dispatcher == null || !dispatcher.isAlive() || bufferSize <= 0) {
-                synchronized (appenderPipeline) {
-                    appenderPipeline.appendLoopOnAppenders(event);
-                }
-
-                return;
-            }
-
-            event.getThreadName();
-            event.getRenderedMessage();
-
-            synchronized (buffer) {
-                while (true) {
-                    int previousSize = buffer.size();
-
-                    if (previousSize < bufferSize) {
-                        buffer.add(event);
-
-                        if (previousSize == 0) {
-                            buffer.notifyAll();
-                        }
-
-                        break;
-                    }
-
-                    boolean discard = true;
-                    if (blocking
-                        && !Thread.interrupted()
-                        && Thread.currentThread() != dispatcher) {
-                        try {
-                            buffer.wait();
-                            discard = false;
-                        } catch (InterruptedException e) {
-                            Thread.currentThread().interrupt();
-                        }
-                    }
-                    if (discard) {
-                        String loggerName = event.getLoggerName();
-                        DiscardSummary summary = discardMap.get(loggerName);
-
-                        if (summary == null) {
-                            summary = new DiscardSummary(event);
-                            discardMap.put(loggerName, summary);
-                        } else {
-                            summary.add(event);
-                        }
-
-                        break;
-                    }
-                }
-            }
-        }
-
-        public void close() {
-
-            synchronized (buffer) {
-                closed = true;
-                buffer.notifyAll();
-            }
-
-            try {
-                dispatcher.join();
-            } catch (InterruptedException e) {
-                Thread.currentThread().interrupt();
-                SysLogger.error(
-                    "Got an InterruptedException while waiting for the "
-                        + "dispatcher to finish.", e);
-            }
-
-            synchronized (appenderPipeline) {
-                Enumeration iter = appenderPipeline.getAllAppenders();
-                if (iter != null) {
-                    while (iter.hasMoreElements()) {
-                        Object next = iter.nextElement();
-                        if (next instanceof Appender) {
-                            ((Appender) next).close();
-                        }
-                    }
-                }
-            }
-        }
-
-        public Enumeration getAllAppenders() {
-            synchronized (appenderPipeline) {
-                return appenderPipeline.getAllAppenders();
-            }
-        }
-
-        public Appender getAppender(final String name) {
-            synchronized (appenderPipeline) {
-                return appenderPipeline.getAppender(name);
-            }
-        }
-
-        public boolean isAttached(final Appender appender) {
-            synchronized (appenderPipeline) {
-                return appenderPipeline.isAttached(appender);
-            }
-        }
-
-        public void removeAllAppenders() {
-            synchronized (appenderPipeline) {
-                appenderPipeline.removeAllAppenders();
-            }
-        }
-
-        public void removeAppender(final Appender appender) {
-            synchronized (appenderPipeline) {
-                appenderPipeline.removeAppender(appender);
-            }
-        }
-
-        public void removeAppender(final String name) {
-            synchronized (appenderPipeline) {
-                appenderPipeline.removeAppender(name);
-            }
-        }
-
-        public void setBufferSize(final int size) {
-            if (size < 0) {
-                throw new NegativeArraySizeException("size");
-            }
-
-            synchronized (buffer) {
-                bufferSize = (size < 1) ? 1 : size;
-                buffer.notifyAll();
-            }
-        }
-
-        public int getBufferSize() {
-            return bufferSize;
-        }
-
-        public void setBlocking(final boolean value) {
-            synchronized (buffer) {
-                blocking = value;
-                buffer.notifyAll();
-            }
-        }
-
-        public boolean getBlocking() {
-            return blocking;
-        }
-
-        private final class DiscardSummary {
-
-            private LoggingEvent maxEvent;
-
-            private int count;
-
-            public DiscardSummary(final LoggingEvent event) {
-                maxEvent = event;
-                count = 1;
-            }
-
-            public void add(final LoggingEvent event) {
-                if (event.getLevel().toInt() > maxEvent.getLevel().toInt()) {
-                    maxEvent = event;
-                }
-                count++;
-            }
-
-            public LoggingEvent createEvent() {
-                String msg =
-                    MessageFormat.format(
-                        "Discarded {0} messages due to full event buffer including: {1}",
-                        count, maxEvent.getMessage());
-
-                return new LoggingEvent(
-                    "AsyncAppender.DONT_REPORT_LOCATION",
-                    Logger.getLogger(maxEvent.getLoggerName()),
-                    maxEvent.getLevel(),
-                    msg,
-                    null);
-            }
-        }
-
-        private class Dispatcher implements Runnable {
-
-            private final AsyncAppender parent;
-
-            private final List<LoggingEvent> buffer;
-
-            private final Map<String, DiscardSummary> discardMap;
-
-            private final AppenderPipelineImpl appenderPipeline;
-
-            public Dispatcher(
-                final AsyncAppender parent, final List<LoggingEvent> buffer, final Map<String, DiscardSummary> discardMap,
-                final AppenderPipelineImpl appenderPipeline) {
-
-                this.parent = parent;
-                this.buffer = buffer;
-                this.appenderPipeline = appenderPipeline;
-                this.discardMap = discardMap;
-            }
-
-            public void run() {
-                boolean isActive = true;
-
-                try {
-                    while (isActive) {
-                        LoggingEvent[] events = null;
-
-                        synchronized (buffer) {
-                            int bufferSize = buffer.size();
-                            isActive = !parent.closed;
-
-                            while (bufferSize == 0 && isActive) {
-                                buffer.wait();
-                                bufferSize = buffer.size();
-                                isActive = !parent.closed;
-                            }
-
-                            if (bufferSize > 0) {
-                                events = new LoggingEvent[bufferSize + discardMap.size()];
-                                buffer.toArray(events);
-
-                                int index = bufferSize;
-                                Collection<DiscardSummary> values = discardMap.values();
-                                for (DiscardSummary value : values) {
-                                    events[index++] = value.createEvent();
-                                }
-
-                                buffer.clear();
-                                discardMap.clear();
-
-                                buffer.notifyAll();
-                            }
-                        }
-                        if (events != null) {
-                            for (LoggingEvent event : events) {
-                                synchronized (appenderPipeline) {
-                                    appenderPipeline.appendLoopOnAppenders(event);
-                                }
-                            }
-                        }
-                    }
-                } catch (InterruptedException ex) {
-                    Thread.currentThread().interrupt();
-                }
-            }
-        }
-    }
-
-    private static class QuietWriter extends FilterWriter {
-
-        protected Appender appender;
-
-        public QuietWriter(Writer writer, Appender appender) {
-            super(writer);
-            this.appender = appender;
-        }
-
-        public void write(String string) {
-            if (string != null) {
-                try {
-                    out.write(string);
-                } catch (Exception e) {
-                    appender.handleError("Failed to write [" + string + "].", e,
-                        Appender.CODE_WRITE_FAILURE);
-                }
-            }
-        }
-
-        public void flush() {
-            try {
-                out.flush();
-            } catch (Exception e) {
-                appender.handleError("Failed to flush writer,", e,
-                    Appender.CODE_FLUSH_FAILURE);
-            }
-        }
-    }
-
-    public static class WriterAppender extends Appender {
-
-
-        protected boolean immediateFlush = true;
-
-        protected String encoding;
-
-
-        protected QuietWriter qw;
-
-        public WriterAppender() {
-
-        }
-
-        public void setImmediateFlush(boolean value) {
-            immediateFlush = value;
-        }
-
-
-        public boolean getImmediateFlush() {
-            return immediateFlush;
-        }
-
-        public void activateOptions() {
-        }
-
-
-        public void append(LoggingEvent event) {
-            if (!checkEntryConditions()) {
-                return;
-            }
-            subAppend(event);
-        }
-
-        protected boolean checkEntryConditions() {
-            if (this.closed) {
-                SysLogger.warn("Not allowed to write to a closed appender.");
-                return false;
-            }
-
-            if (this.qw == null) {
-                handleError("No output stream or file set for the appender named [" +
-                    name + "].");
-                return false;
-            }
-
-            if (this.layout == null) {
-                handleError("No layout set for the appender named [" + name + "].");
-                return false;
-            }
-            return true;
-        }
-
-        public synchronized void close() {
-            if (this.closed) {
-                return;
-            }
-            this.closed = true;
-            writeFooter();
-            reset();
-        }
-
-        protected void closeWriter() {
-            if (qw != null) {
-                try {
-                    qw.close();
-                } catch (IOException e) {
-                    handleError("Could not close " + qw, e, CODE_CLOSE_FAILURE);
-                }
-            }
-        }
-
-        protected OutputStreamWriter createWriter(OutputStream os) {
-            OutputStreamWriter retval = null;
-
-            String enc = getEncoding();
-            if (enc != null) {
-                try {
-                    retval = new OutputStreamWriter(os, enc);
-                } catch (IOException e) {
-                    SysLogger.warn("Error initializing output writer.");
-                    SysLogger.warn("Unsupported encoding?");
-                }
-            }
-            if (retval == null) {
-                retval = new OutputStreamWriter(os, StandardCharsets.UTF_8);
-            }
-            return retval;
-        }
-
-        public String getEncoding() {
-            return encoding;
-        }
-
-        public void setEncoding(String value) {
-            encoding = value;
-        }
-
-
-        public synchronized void setWriter(Writer writer) {
-            reset();
-            this.qw = new QuietWriter(writer, this);
-            writeHeader();
-        }
-
-        protected void subAppend(LoggingEvent event) {
-            this.qw.write(this.layout.format(event));
-
-            if (layout.ignoresThrowable()) {
-                String[] s = event.getThrowableStr();
-                if (s != null) {
-                    for (String s1 : s) {
-                        this.qw.write(s1);
-                        this.qw.write(LINE_SEP);
-                    }
-                }
-            }
-
-            if (shouldFlush(event)) {
-                this.qw.flush();
-            }
-        }
-
-        protected void reset() {
-            closeWriter();
-            this.qw = null;
-        }
-
-        protected void writeFooter() {
-            if (layout != null) {
-                String f = layout.getFooter();
-                if (f != null && this.qw != null) {
-                    this.qw.write(f);
-                    this.qw.flush();
-                }
-            }
-        }
-
-        protected void writeHeader() {
-            if (layout != null) {
-                String h = layout.getHeader();
-                if (h != null && this.qw != null) {
-                    this.qw.write(h);
-                }
-            }
-        }
-
-        protected boolean shouldFlush(final LoggingEvent event) {
-            return event != null && immediateFlush;
-        }
-    }
-
-
-    public static class FileAppender extends WriterAppender {
-
-        protected boolean fileAppend = true;
-
-        protected String fileName = null;
-
-        protected boolean bufferedIO = false;
-
-        protected int bufferSize = 8 * 1024;
-
-        public FileAppender() {
-        }
-
-        public FileAppender(Layout layout, String filename, boolean append)
-            throws IOException {
-            this.layout = layout;
-            this.setFile(filename, append, false, bufferSize);
-        }
-
-        public void setFile(String file) {
-            fileName = file.trim();
-        }
-
-        public boolean getAppend() {
-            return fileAppend;
-        }
-
-        public String getFile() {
-            return fileName;
-        }
-
-        public void activateOptions() {
-            if (fileName != null) {
-                try {
-                    setFile(fileName, fileAppend, bufferedIO, bufferSize);
-                } catch (IOException e) {
-                    handleError("setFile(" + fileName + "," + fileAppend + ") call failed.",
-                        e, CODE_FILE_OPEN_FAILURE);
-                }
-            } else {
-                SysLogger.warn("File option not set for appender [" + name + "].");
-                SysLogger.warn("Are you using FileAppender instead of ConsoleAppender?");
-            }
-        }
-
-        protected void closeFile() {
-            if (this.qw != null) {
-                try {
-                    this.qw.close();
-                } catch (IOException e) {
-                    if (e instanceof InterruptedIOException) {
-                        Thread.currentThread().interrupt();
-                    }
-                    SysLogger.error("Could not close " + qw, e);
-                }
-            }
-        }
-
-        public boolean getBufferedIO() {
-            return this.bufferedIO;
-        }
-
-        public int getBufferSize() {
-            return this.bufferSize;
-        }
-
-        public void setAppend(boolean flag) {
-            fileAppend = flag;
-        }
-
-        public void setBufferedIO(boolean bufferedIO) {
-            this.bufferedIO = bufferedIO;
-            if (bufferedIO) {
-                immediateFlush = false;
-            }
-        }
-
-        public void setBufferSize(int bufferSize) {
-            this.bufferSize = bufferSize;
-        }
-
-        public synchronized void setFile(String fileName, boolean append, boolean bufferedIO, int bufferSize)
-            throws IOException {
-            SysLogger.debug("setFile called: " + fileName + ", " + append);
-
-            if (bufferedIO) {
-                setImmediateFlush(false);
-            }
-
-            reset();
-            FileOutputStream ostream;
-            try {
-                ostream = new FileOutputStream(fileName, append);
-            } catch (FileNotFoundException ex) {
-                String parentName = new File(fileName).getParent();
-                if (parentName != null) {
-                    File parentDir = new File(parentName);
-                    if (!parentDir.exists() && parentDir.mkdirs()) {
-                        ostream = new FileOutputStream(fileName, append);
-                    } else {
-                        throw ex;
-                    }
-                } else {
-                    throw ex;
-                }
-            }
-            Writer fw = createWriter(ostream);
-            if (bufferedIO) {
-                fw = new BufferedWriter(fw, bufferSize);
-            }
-            this.setQWForFiles(fw);
-            this.fileName = fileName;
-            this.fileAppend = append;
-            this.bufferedIO = bufferedIO;
-            this.bufferSize = bufferSize;
-            writeHeader();
-            SysLogger.debug("setFile ended");
-        }
-
-        protected void setQWForFiles(Writer writer) {
-            this.qw = new QuietWriter(writer, this);
-        }
-
-        protected void reset() {
-            closeFile();
-            this.fileName = null;
-            super.reset();
-        }
-    }
-
-
-    public static class RollingFileAppender extends FileAppender {
-
-        protected long maxFileSize = 10 * 1024 * 1024;
-
-        protected int maxBackupIndex = 1;
-
-        private long nextRollover = 0;
-
-        public RollingFileAppender() {
-            super();
-        }
-
-        public int getMaxBackupIndex() {
-            return maxBackupIndex;
-        }
-
-        public long getMaximumFileSize() {
-            return maxFileSize;
-        }
-
-        public void rollOver() {
-            File target;
-            File file;
-
-            if (qw != null) {
-                long size = ((CountingQuietWriter) qw).getCount();
-                SysLogger.debug("rolling over count=" + size);
-                nextRollover = size + maxFileSize;
-            }
-            SysLogger.debug("maxBackupIndex=" + maxBackupIndex);
-
-            boolean renameSucceeded = true;
-            if (maxBackupIndex > 0) {
-                file = new File(fileName + '.' + maxBackupIndex);
-                if (file.exists()) {
-                    renameSucceeded = file.delete();
-                }
-
-                for (int i = maxBackupIndex - 1; i >= 1 && renameSucceeded; i--) {
-                    file = new File(fileName + "." + i);
-                    if (file.exists()) {
-                        target = new File(fileName + '.' + (i + 1));
-                        SysLogger.debug("Renaming file " + file + " to " + target);
-                        renameSucceeded = file.renameTo(target);
-                    }
-                }
-
-                if (renameSucceeded) {
-                    target = new File(fileName + "." + 1);
-
-                    this.closeFile(); // keep windows happy.
-
-                    file = new File(fileName);
-                    SysLogger.debug("Renaming file " + file + " to " + target);
-                    renameSucceeded = file.renameTo(target);
-
-                    if (!renameSucceeded) {
-                        try {
-                            this.setFile(fileName, true, bufferedIO, bufferSize);
-                        } catch (IOException e) {
-                            if (e instanceof InterruptedIOException) {
-                                Thread.currentThread().interrupt();
-                            }
-                            SysLogger.error("setFile(" + fileName + ", true) call failed.", e);
-                        }
-                    }
-                }
-            }
-
-            if (renameSucceeded) {
-                try {
-                    this.setFile(fileName, false, bufferedIO, bufferSize);
-                    nextRollover = 0;
-                } catch (IOException e) {
-                    if (e instanceof InterruptedIOException) {
-                        Thread.currentThread().interrupt();
-                    }
-                    SysLogger.error("setFile(" + fileName + ", false) call failed.", e);
-                }
-            }
-        }
-
-        public synchronized void setFile(String fileName, boolean append, boolean bufferedIO, int bufferSize)
-            throws IOException {
-            super.setFile(fileName, append, this.bufferedIO, this.bufferSize);
-            if (append) {
-                File f = new File(fileName);
-                ((CountingQuietWriter) qw).setCount(f.length());
-            }
-        }
-
-        public void setMaxBackupIndex(int maxBackups) {
-            this.maxBackupIndex = maxBackups;
-        }
-
-        public void setMaximumFileSize(long maxFileSize) {
-            this.maxFileSize = maxFileSize;
-        }
-
-        protected void setQWForFiles(Writer writer) {
-            this.qw = new CountingQuietWriter(writer, this);
-        }
-
-        protected void subAppend(LoggingEvent event) {
-            super.subAppend(event);
-            if (fileName != null && qw != null) {
-                long size = ((CountingQuietWriter) qw).getCount();
-                if (size >= maxFileSize && size >= nextRollover) {
-                    rollOver();
-                }
-            }
-        }
-
-        protected class CountingQuietWriter extends QuietWriter {
-
-            protected long count;
-
-            public CountingQuietWriter(Writer writer, Appender appender) {
-                super(writer, appender);
-            }
-
-            public void write(String string) {
-                try {
-                    out.write(string);
-                    count += string.length();
-                } catch (IOException e) {
-                    appender.handleError("Write failure.", e, Appender.CODE_WRITE_FAILURE);
-                }
-            }
-
-            public long getCount() {
-                return count;
-            }
-
-            public void setCount(long count) {
-                this.count = count;
-            }
-
-        }
-    }
-
-
-    public static class DailyRollingFileAppender extends FileAppender {
-
-        static final int TOP_OF_TROUBLE = -1;
-        static final int TOP_OF_MINUTE = 0;
-        static final int TOP_OF_HOUR = 1;
-        static final int HALF_DAY = 2;
-        static final int TOP_OF_DAY = 3;
-        static final int TOP_OF_WEEK = 4;
-        static final int TOP_OF_MONTH = 5;
-
-
-        /**
-         * The date pattern. By default, the pattern is set to
-         * "'.'yyyy-MM-dd" meaning daily rollover.
-         */
-        private String datePattern = "'.'yyyy-MM-dd";
-
-        private String scheduledFilename;
-
-        private long nextCheck = System.currentTimeMillis() - 1;
-
-        Date now = new Date();
-
-        SimpleDateFormat sdf;
-
-        RollingCalendar rc = new RollingCalendar();
-
-        final TimeZone gmtTimeZone = TimeZone.getTimeZone("GMT");
-
-
-        public void setDatePattern(String pattern) {
-            datePattern = pattern;
-        }
-
-        public String getDatePattern() {
-            return datePattern;
-        }
-
-        public void activateOptions() {
-            super.activateOptions();
-            if (datePattern != null && fileName != null) {
-                now.setTime(System.currentTimeMillis());
-                sdf = new SimpleDateFormat(datePattern);
-                int type = computeCheckPeriod();
-                printPeriodicity(type);
-                rc.setType(type);
-                File file = new File(fileName);
-                scheduledFilename = fileName + sdf.format(new Date(file.lastModified()));
-
-            } else {
-                SysLogger.error("Either File or DatePattern options are not set for appender [" + name + "].");
-            }
-        }
-
-        void printPeriodicity(int type) {
-            switch (type) {
-                case TOP_OF_MINUTE:
-                    SysLogger.debug("Appender [" + name + "] to be rolled every minute.");
-                    break;
-                case TOP_OF_HOUR:
-                    SysLogger.debug("Appender [" + name + "] to be rolled on top of every hour.");
-                    break;
-                case HALF_DAY:
-                    SysLogger.debug("Appender [" + name + "] to be rolled at midday and midnight.");
-                    break;
-                case TOP_OF_DAY:
-                    SysLogger.debug("Appender [" + name + "] to be rolled at midnight.");
-                    break;
-                case TOP_OF_WEEK:
-                    SysLogger.debug("Appender [" + name + "] to be rolled at start of week.");
-                    break;
-                case TOP_OF_MONTH:
-                    SysLogger.debug("Appender [" + name + "] to be rolled at start of every month.");
-                    break;
-                default:
-                    SysLogger.warn("Unknown periodicity for appender [" + name + "].");
-            }
-        }
-
-        int computeCheckPeriod() {
-            RollingCalendar rollingCalendar = new RollingCalendar(gmtTimeZone, Locale.getDefault());
-            // set sate to 1970-01-01 00:00:00 GMT
-            Date epoch = new Date(0);
-            if (datePattern != null) {
-                for (int i = TOP_OF_MINUTE; i <= TOP_OF_MONTH; i++) {
-                    SimpleDateFormat simpleDateFormat = new SimpleDateFormat(datePattern);
-                    simpleDateFormat.setTimeZone(gmtTimeZone);
-                    String r0 = simpleDateFormat.format(epoch);
-                    rollingCalendar.setType(i);
-                    Date next = new Date(rollingCalendar.getNextCheckMillis(epoch));
-                    String r1 = simpleDateFormat.format(next);
-                    if (r0 != null && r1 != null && !r0.equals(r1)) {
-                        return i;
-                    }
-                }
-            }
-            return TOP_OF_TROUBLE;
-        }
-
-        void rollOver() throws IOException {
-
-            if (datePattern == null) {
-                handleError("Missing DatePattern option in rollOver().");
-                return;
-            }
-
-            String datedFilename = fileName + sdf.format(now);
-
-            if (scheduledFilename.equals(datedFilename)) {
-                return;
-            }
-            this.closeFile();
-
-            File target = new File(scheduledFilename);
-            if (target.exists() && !target.delete()) {
-                SysLogger.error("Failed to delete [" + scheduledFilename + "].");
-            }
-
-            File file = new File(fileName);
-            boolean result = file.renameTo(target);
-            if (result) {
-                SysLogger.debug(fileName + " -> " + scheduledFilename);
-            } else {
-                SysLogger.error("Failed to rename [" + fileName + "] to [" + scheduledFilename + "].");
-            }
-
-            try {
-                this.setFile(fileName, true, this.bufferedIO, this.bufferSize);
-            } catch (IOException e) {
-                handleError("setFile(" + fileName + ", true) call failed.");
-            }
-            scheduledFilename = datedFilename;
-        }
-
-        protected void subAppend(LoggingEvent event) {
-            long n = System.currentTimeMillis();
-            if (n >= nextCheck) {
-                now.setTime(n);
-                nextCheck = rc.getNextCheckMillis(now);
-                try {
-                    rollOver();
-                } catch (IOException ioe) {
-                    if (ioe instanceof InterruptedIOException) {
-                        Thread.currentThread().interrupt();
-                    }
-                    SysLogger.error("rollOver() failed.", ioe);
-                }
-            }
-            super.subAppend(event);
-        }
-    }
-
-    private static class RollingCalendar extends GregorianCalendar {
-        private static final long serialVersionUID = -3560331770601814177L;
-
-        int type = DailyRollingFileAppender.TOP_OF_TROUBLE;
-
-        RollingCalendar() {
-            super();
-        }
-
-        RollingCalendar(TimeZone tz, Locale locale) {
-            super(tz, locale);
-        }
-
-        void setType(int type) {
-            this.type = type;
-        }
-
-        public long getNextCheckMillis(Date now) {
-            return getNextCheckDate(now).getTime();
-        }
-
-        public Date getNextCheckDate(Date now) {
-            this.setTime(now);
-
-            switch (type) {
-                case DailyRollingFileAppender.TOP_OF_MINUTE:
-                    this.set(Calendar.SECOND, 0);
-                    this.set(Calendar.MILLISECOND, 0);
-                    this.add(Calendar.MINUTE, 1);
-                    break;
-                case DailyRollingFileAppender.TOP_OF_HOUR:
-                    this.set(Calendar.MINUTE, 0);
-                    this.set(Calendar.SECOND, 0);
-                    this.set(Calendar.MILLISECOND, 0);
-                    this.add(Calendar.HOUR_OF_DAY, 1);
-                    break;
-                case DailyRollingFileAppender.HALF_DAY:
-                    this.set(Calendar.MINUTE, 0);
-                    this.set(Calendar.SECOND, 0);
-                    this.set(Calendar.MILLISECOND, 0);
-                    int hour = get(Calendar.HOUR_OF_DAY);
-                    if (hour < 12) {
-                        this.set(Calendar.HOUR_OF_DAY, 12);
-                    } else {
-                        this.set(Calendar.HOUR_OF_DAY, 0);
-                        this.add(Calendar.DAY_OF_MONTH, 1);
-                    }
-                    break;
-                case DailyRollingFileAppender.TOP_OF_DAY:
-                    this.set(Calendar.HOUR_OF_DAY, 0);
-                    this.set(Calendar.MINUTE, 0);
-                    this.set(Calendar.SECOND, 0);
-                    this.set(Calendar.MILLISECOND, 0);
-                    this.add(Calendar.DATE, 1);
-                    break;
-                case DailyRollingFileAppender.TOP_OF_WEEK:
-                    this.set(Calendar.DAY_OF_WEEK, getFirstDayOfWeek());
-                    this.set(Calendar.HOUR_OF_DAY, 0);
-                    this.set(Calendar.MINUTE, 0);
-                    this.set(Calendar.SECOND, 0);
-                    this.set(Calendar.MILLISECOND, 0);
-                    this.add(Calendar.WEEK_OF_YEAR, 1);
-                    break;
-                case DailyRollingFileAppender.TOP_OF_MONTH:
-                    this.set(Calendar.DATE, 1);
-                    this.set(Calendar.HOUR_OF_DAY, 0);
-                    this.set(Calendar.MINUTE, 0);
-                    this.set(Calendar.SECOND, 0);
-                    this.set(Calendar.MILLISECOND, 0);
-                    this.add(Calendar.MONTH, 1);
-                    break;
-                default:
-                    throw new IllegalStateException("Unknown periodicity type.");
-            }
-            return getTime();
-        }
-    }
-
-    public static class ConsoleAppender extends WriterAppender {
-
-        protected String target = SYSTEM_OUT;
-
-        public ConsoleAppender() {
-        }
-
-        public void setTarget(String value) {
-            String v = value.trim();
-
-            if (SYSTEM_OUT.equalsIgnoreCase(v)) {
-                target = SYSTEM_OUT;
-            } else if (SYSTEM_ERR.equalsIgnoreCase(v)) {
-                target = SYSTEM_ERR;
-            } else {
-                targetWarn(value);
-            }
-        }
-
-        public String getTarget() {
-            return target;
-        }
-
-        void targetWarn(String val) {
-            SysLogger.warn("[" + val + "] should be System.out or System.err.");
-            SysLogger.warn("Using previously set target, System.out by default.");
-        }
-
-        public void activateOptions() {
-            if (target.equals(SYSTEM_ERR)) {
-                setWriter(createWriter(System.err));
-            } else {
-                setWriter(createWriter(System.out));
-            }
-            super.activateOptions();
-        }
-
-        protected final void closeWriter() {
-
-        }
-    }
-
-    public static LayoutBuilder newLayoutBuilder() {
-        return new LayoutBuilder();
-    }
-
-    public static class LayoutBuilder {
-
-        private Layout layout;
-
-        public LayoutBuilder withSimpleLayout() {
-            layout = new SimpleLayout();
-            return this;
-        }
-
-        public LayoutBuilder withDefaultLayout() {
-            layout = new DefaultLayout();
-            return this;
-        }
-
-        public Layout build() {
-            if (layout == null) {
-                layout = new SimpleLayout();
-            }
-            return layout;
-        }
-    }
-
-    public static class SimpleLayout extends Layout {
-
-        @Override
-        public String format(LoggingEvent event) {
-
-            StringBuilder sb = new StringBuilder();
-            sb.append(event.getLevel().toString());
-            sb.append(" - ");
-            sb.append(event.getRenderedMessage());
-            sb.append("\r\n");
-            return sb.toString();
-        }
-
-        @Override
-        public boolean ignoresThrowable() {
-            return false;
-        }
-    }
-
-
-    /**
-     * %d{yyy-MM-dd HH:mm:ss,SSS} %p %c{1}%L - %m%n
-     */
-    public static class DefaultLayout extends Layout {
-        @Override
-        public String format(LoggingEvent event) {
-
-            StringBuilder sb = new StringBuilder();
-            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss,SSS");
-            String format = simpleDateFormat.format(new Date(event.timeStamp));
-            sb.append(format);
-            sb.append(" ");
-            sb.append(event.getLevel());
-            sb.append(" ");
-            sb.append(event.getLoggerName());
-            sb.append(" - ");
-            sb.append(event.getRenderedMessage());
-            String[] throwableStr = event.getThrowableStr();
-            if (throwableStr != null) {
-                sb.append("\r\n");
-                for (String s : throwableStr) {
-                    sb.append(s);
-                    sb.append("\r\n");
-                }
-            }
-            sb.append("\r\n");
-            return sb.toString();
-        }
-
-        @Override
-        public boolean ignoresThrowable() {
-            return false;
-        }
-    }
-}
diff --git a/logging/src/main/java/org/apache/rocketmq/logging/inner/LoggingEvent.java b/logging/src/main/java/org/apache/rocketmq/logging/inner/LoggingEvent.java
deleted file mode 100644
index 06fa6ae..0000000
--- a/logging/src/main/java/org/apache/rocketmq/logging/inner/LoggingEvent.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.rocketmq.logging.inner;
-
-import java.io.IOException;
-import java.io.InterruptedIOException;
-import java.io.LineNumberReader;
-import java.io.PrintWriter;
-import java.io.StringReader;
-import java.io.StringWriter;
-import java.util.ArrayList;
-
-public class LoggingEvent implements java.io.Serializable {
-
-    transient public final String fqnOfCategoryClass;
-
-    transient private Object message;
-
-    transient private Level level;
-
-    transient private Logger logger;
-
-    private String renderedMessage;
-
-    private String threadName;
-
-    public final long timeStamp;
-
-    private Throwable throwable;
-
-    public LoggingEvent(String fqnOfCategoryClass, Logger logger,
-                        Level level, Object message, Throwable throwable) {
-        this.fqnOfCategoryClass = fqnOfCategoryClass;
-        this.message = message;
-        this.logger = logger;
-        this.throwable = throwable;
-        this.level = level;
-        timeStamp = System.currentTimeMillis();
-    }
-
-    public Object getMessage() {
-        if (message != null) {
-            return message;
-        } else {
-            return getRenderedMessage();
-        }
-    }
-
-    public String getRenderedMessage() {
-        if (renderedMessage == null && message != null) {
-            if (message instanceof String) {
-                renderedMessage = (String) message;
-            } else {
-                renderedMessage = message.toString();
-            }
-            if (renderedMessage != null) {
-                renderedMessage = renderedMessage.replace('\r', ' ').replace('\n', ' ');
-            }
-        }
-        return renderedMessage;
-    }
-
-    public String getThreadName() {
-        if (threadName == null) {
-            threadName = (Thread.currentThread()).getName();
-        }
-        return threadName;
-    }
-
-    public Level getLevel() {
-        return level;
-    }
-
-    public String getLoggerName() {
-        return logger.getName();
-    }
-
-    public String[] getThrowableStr() {
-        if (throwable == null) {
-            return null;
-        }
-        StringWriter sw = new StringWriter();
-        PrintWriter pw = new PrintWriter(sw);
-        try {
-            throwable.printStackTrace(pw);
-        } catch (RuntimeException ex) {
-            SysLogger.warn("InnerLogger print stack trace error", ex);
-        }
-        pw.flush();
-        LineNumberReader reader = new LineNumberReader(
-            new StringReader(sw.toString()));
-        ArrayList<String> lines = new ArrayList<>();
-        try {
-            String line = reader.readLine();
-            while (line != null) {
-                lines.add(line);
-                line = reader.readLine();
-            }
-        } catch (IOException ex) {
-            if (ex instanceof InterruptedIOException) {
-                Thread.currentThread().interrupt();
-            }
-            lines.add(ex.toString());
-        }
-        String[] tempRep = new String[lines.size()];
-        lines.toArray(tempRep);
-        return tempRep;
-    }
-}
diff --git a/logging/src/main/java/org/apache/rocketmq/logging/inner/SysLogger.java b/logging/src/main/java/org/apache/rocketmq/logging/inner/SysLogger.java
deleted file mode 100755
index b6d1049..0000000
--- a/logging/src/main/java/org/apache/rocketmq/logging/inner/SysLogger.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.rocketmq.logging.inner;
-
-public class SysLogger {
-
-    protected static boolean debugEnabled = false;
-
-    private static boolean quietMode = false;
-
-    private static final String PREFIX = "RocketMQLog: ";
-    private static final String ERR_PREFIX = "RocketMQLog:ERROR ";
-    private static final String WARN_PREFIX = "RocketMQLog:WARN ";
-
-    public static void setInternalDebugging(boolean enabled) {
-        debugEnabled = enabled;
-    }
-
-    public static void debug(String msg) {
-        if (debugEnabled && !quietMode) {
-            System.out.printf("%s", PREFIX + msg);
-        }
-    }
-
-    public static void debug(String msg, Throwable t) {
-        if (debugEnabled && !quietMode) {
-            System.out.printf("%s", PREFIX + msg);
-            if (t != null) {
-                t.printStackTrace(System.out);
-            }
-        }
-    }
-
-    public static void error(String msg) {
-        if (quietMode) {
-            return;
-        }
-        System.err.println(ERR_PREFIX + msg);
-    }
-
-    public static void error(String msg, Throwable t) {
-        if (quietMode) {
-            return;
-        }
-
-        System.err.println(ERR_PREFIX + msg);
-        if (t != null) {
-            t.printStackTrace();
-        }
-    }
-
-    public static void setQuietMode(boolean quietMode) {
-        SysLogger.quietMode = quietMode;
-    }
-
-    public static void warn(String msg) {
-        if (quietMode) {
-            return;
-        }
-
-        System.err.println(WARN_PREFIX + msg);
-    }
-
-    public static void warn(String msg, Throwable t) {
-        if (quietMode) {
-            return;
-        }
-
-        System.err.println(WARN_PREFIX + msg);
-        if (t != null) {
-            t.printStackTrace();
-        }
-    }
-}
diff --git a/logging/src/main/java/org/apache/rocketmq/logging/package-info.java b/logging/src/main/java/org/apache/rocketmq/logging/package-info.java
deleted file mode 100644
index 7cb0645..0000000
--- a/logging/src/main/java/org/apache/rocketmq/logging/package-info.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.rocketmq.logging;
-
-/*
- This package is a minimal logger on the basis of Apache Log4j without
- file configuration and pattern layout configuration. Main forked files are
- followed as below:
- 1. LoggingEvent
- 2. Logger
- 3. Layout
- 4. Level
- 5. AsyncAppender
- 6. FileAppender
- 7. RollingFileAppender
- 8. DailyRollingFileAppender
- 9. ConsoleAppender
-
- For more information about Apache Log4j, please go to https://github.com/apache/log4j.
- */
\ No newline at end of file
diff --git a/logging/src/test/java/org/apache/rocketmq/logging/BasicLoggerTest.java b/logging/src/test/java/org/apache/rocketmq/logging/BasicLoggerTest.java
deleted file mode 100644
index c198704..0000000
--- a/logging/src/test/java/org/apache/rocketmq/logging/BasicLoggerTest.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.rocketmq.logging;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import org.apache.rocketmq.logging.inner.Level;
-import org.apache.rocketmq.logging.inner.Logger;
-import org.apache.rocketmq.logging.inner.LoggingEvent;
-import org.junit.After;
-import org.junit.Before;
-
-public class BasicLoggerTest {
-
-    protected Logger logger = Logger.getLogger("test");
-
-    protected LoggingEvent loggingEvent;
-
-    protected String loggingDir = System.getProperty("user.home") + "/logs/rocketmq-test";
-
-    @Before
-    public void createLoggingEvent() {
-        loggingEvent = new LoggingEvent(Logger.class.getName(), logger, Level.INFO,
-            "junit test error", new RuntimeException("createLogging error"));
-    }
-
-    public String readFile(String file) throws IOException {
-        StringBuilder stringBuilder = new StringBuilder();
-        FileInputStream fileInputStream = new FileInputStream(file);
-        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fileInputStream));
-        String line = bufferedReader.readLine();
-        while (line != null) {
-            stringBuilder.append(line);
-            stringBuilder.append("\r\n");
-            line = bufferedReader.readLine();
-        }
-        bufferedReader.close();
-        return stringBuilder.toString();
-    }
-
-    @After
-    public void clean() {
-        File file = new File(loggingDir);
-        if (file.exists()) {
-            File[] files = file.listFiles();
-            for (File file1 : files) {
-                file1.delete();
-            }
-        }
-    }
-}
diff --git a/logging/src/test/java/org/apache/rocketmq/logging/InnerLoggerFactoryTest.java b/logging/src/test/java/org/apache/rocketmq/logging/InnerLoggerFactoryTest.java
deleted file mode 100644
index 2faaabc..0000000
--- a/logging/src/test/java/org/apache/rocketmq/logging/InnerLoggerFactoryTest.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.rocketmq.logging;
-
-import org.apache.rocketmq.logging.inner.Appender;
-import org.apache.rocketmq.logging.inner.Level;
-import org.apache.rocketmq.logging.inner.Logger;
-import org.apache.rocketmq.logging.inner.LoggingBuilder;
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.ByteArrayOutputStream;
-import java.io.PrintStream;
-
-public class InnerLoggerFactoryTest extends BasicLoggerTest {
-
-    private ByteArrayOutputStream byteArrayOutputStream;
-
-    public static final String LOGGER = "ConsoleLogger";
-
-    private PrintStream out;
-
-    @Before
-    public void initLogger() {
-        out = System.out;
-        byteArrayOutputStream = new ByteArrayOutputStream();
-        System.setOut(new PrintStream(byteArrayOutputStream));
-
-        Appender consoleAppender = LoggingBuilder.newAppenderBuilder()
-            .withConsoleAppender(LoggingBuilder.SYSTEM_OUT)
-            .withLayout(LoggingBuilder.newLayoutBuilder().withDefaultLayout().build()).build();
-
-        Logger consoleLogger = Logger.getLogger("ConsoleLogger");
-        consoleLogger.setAdditivity(false);
-        consoleLogger.addAppender(consoleAppender);
-        consoleLogger.setLevel(Level.INFO);
-    }
-
-    @After
-    public void fixConsole() {
-        System.setOut(out);
-    }
-
-    @Test
-    public void testInnerLoggerFactory() {
-        InternalLoggerFactory.setCurrentLoggerType(InternalLoggerFactory.LOGGER_INNER);
-
-        InternalLogger logger1 = InnerLoggerFactory.getLogger(LOGGER);
-        InternalLogger logger = InternalLoggerFactory.getLogger(LOGGER);
-
-        Assert.assertTrue(logger.getName().equals(logger1.getName()));
-
-        InternalLogger logger2 = InnerLoggerFactory.getLogger(InnerLoggerFactoryTest.class);
-        InnerLoggerFactory.InnerLogger logger3 = (InnerLoggerFactory.InnerLogger) logger2;
-
-        logger.info("innerLogger inner info Message");
-        logger.error("innerLogger inner error Message", new RuntimeException());
-        logger.debug("innerLogger inner debug message");
-        logger3.info("innerLogger info message");
-        logger3.error("logback error message");
-        logger3.info("info {}", "hahahah");
-        logger3.warn("warn {}", "hahahah");
-        logger3.warn("logger3 warn");
-        logger3.error("error {}", "hahahah");
-        logger3.debug("debug {}", "hahahah");
-
-        String content = new String(byteArrayOutputStream.toByteArray());
-
-        Assert.assertTrue(content.contains("InnerLoggerFactoryTest"));
-        Assert.assertTrue(content.contains("info"));
-        Assert.assertTrue(content.contains("RuntimeException"));
-        Assert.assertTrue(!content.contains("debug"));
-    }
-}
diff --git a/logging/src/test/java/org/apache/rocketmq/logging/InternalLoggerTest.java b/logging/src/test/java/org/apache/rocketmq/logging/InternalLoggerTest.java
deleted file mode 100644
index 50f1dd1..0000000
--- a/logging/src/test/java/org/apache/rocketmq/logging/InternalLoggerTest.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.rocketmq.logging;
-
-import java.io.ByteArrayOutputStream;
-import java.io.PrintStream;
-import org.apache.rocketmq.logging.inner.Appender;
-import org.apache.rocketmq.logging.inner.Level;
-import org.apache.rocketmq.logging.inner.Logger;
-import org.apache.rocketmq.logging.inner.LoggingBuilder;
-import org.apache.rocketmq.logging.inner.SysLogger;
-import org.junit.Assert;
-import org.junit.Test;
-
-public class InternalLoggerTest {
-
-    @Test
-    public void testInternalLogger() {
-        SysLogger.setQuietMode(false);
-        SysLogger.setInternalDebugging(true);
-        PrintStream out = System.out;
-        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
-        System.setOut(new PrintStream(byteArrayOutputStream));
-
-        Appender consoleAppender = LoggingBuilder.newAppenderBuilder()
-            .withConsoleAppender(LoggingBuilder.SYSTEM_OUT)
-            .withLayout(LoggingBuilder.newLayoutBuilder().withDefaultLayout().build()).build();
-
-        Logger consoleLogger = Logger.getLogger("ConsoleLogger");
-        consoleLogger.setAdditivity(false);
-        consoleLogger.addAppender(consoleAppender);
-        consoleLogger.setLevel(Level.INFO);
-
-        Logger.getRootLogger().addAppender(consoleAppender);
-
-        InternalLoggerFactory.setCurrentLoggerType(InternalLoggerFactory.LOGGER_INNER);
-        InternalLogger logger = InternalLoggerFactory.getLogger(InternalLoggerTest.class);
-        InternalLogger consoleLogger1 = InternalLoggerFactory.getLogger("ConsoleLogger");
-
-        consoleLogger1.warn("simple warn {}", 14555);
-
-        logger.info("testInternalLogger");
-        consoleLogger1.info("consoleLogger1");
-
-        System.setOut(out);
-        consoleAppender.close();
-
-        String result = new String(byteArrayOutputStream.toByteArray());
-        Assert.assertTrue(result.contains("consoleLogger1"));
-        Assert.assertTrue(result.contains("testInternalLogger"));
-    }
-
-}
diff --git a/logging/src/test/java/org/apache/rocketmq/logging/Slf4jLoggerFactoryTest.java b/logging/src/test/java/org/apache/rocketmq/logging/Slf4jLoggerFactoryTest.java
deleted file mode 100644
index 2fe2abf..0000000
--- a/logging/src/test/java/org/apache/rocketmq/logging/Slf4jLoggerFactoryTest.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.rocketmq.logging;
-
-import ch.qos.logback.classic.joran.JoranConfigurator;
-import ch.qos.logback.core.Context;
-import ch.qos.logback.core.joran.spi.JoranException;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.slf4j.ILoggerFactory;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.net.URL;
-
-public class Slf4jLoggerFactoryTest extends BasicLoggerTest {
-
-    public static final String LOGGER = "Slf4jTestLogger";
-
-    @Before
-    public void initLogback() throws JoranException {
-        InternalLoggerFactory.setCurrentLoggerType(InternalLoggerFactory.LOGGER_SLF4J);
-        System.setProperty("loggingDir", loggingDir);
-        ILoggerFactory iLoggerFactory = LoggerFactory.getILoggerFactory();
-        JoranConfigurator joranConfigurator = new JoranConfigurator();
-        joranConfigurator.setContext((Context) iLoggerFactory);
-        URL logbackConfigFile = Slf4jLoggerFactoryTest.class.getClassLoader().getResource("logback_test.xml");
-        if (logbackConfigFile == null) {
-            throw new RuntimeException("can't find logback_test.xml");
-        } else {
-            joranConfigurator.doConfigure(logbackConfigFile);
-        }
-    }
-
-    @Test
-    public void testSlf4j() throws IOException {
-        InternalLogger logger1 = Slf4jLoggerFactory.getLogger(LOGGER);
-        InternalLogger logger = InternalLoggerFactory.getLogger(LOGGER);
-        Assert.assertTrue(logger.getName().equals(logger1.getName()));
-        InternalLogger logger2 = Slf4jLoggerFactory.getLogger(Slf4jLoggerFactoryTest.class);
-        Slf4jLoggerFactory.Slf4jLogger logger3 = (Slf4jLoggerFactory.Slf4jLogger) logger2;
-
-        String file = loggingDir + "/logback_test.log";
-
-        logger.info("logback slf4j info Message");
-        logger.error("logback slf4j error Message", new RuntimeException("test"));
-        logger.debug("logback slf4j debug message");
-        logger3.info("logback info message");
-        logger3.error("logback error message");
-        logger3.info("info {}", "hahahah");
-        logger3.warn("warn {}", "hahahah");
-        logger3.warn("logger3 warn");
-        logger3.error("error {}", "hahahah");
-        logger3.debug("debug {}", "hahahah");
-        String content = readFile(file);
-        System.out.printf(content);
-
-        Assert.assertTrue(content.contains("Slf4jLoggerFactoryTest"));
-        Assert.assertTrue(content.contains("info"));
-        Assert.assertTrue(content.contains("RuntimeException"));
-        Assert.assertTrue(!content.contains("debug"));
-    }
-
-}
diff --git a/logging/src/test/java/org/apache/rocketmq/logging/inner/AppenderTest.java b/logging/src/test/java/org/apache/rocketmq/logging/inner/AppenderTest.java
deleted file mode 100644
index cd3d0aa..0000000
--- a/logging/src/test/java/org/apache/rocketmq/logging/inner/AppenderTest.java
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.rocketmq.logging.inner;
-
-import org.apache.rocketmq.logging.BasicLoggerTest;
-import org.junit.Assert;
-import org.junit.Test;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.PrintStream;
-
-public class AppenderTest extends BasicLoggerTest {
-
-    @Test
-    public void testConsole() {
-        SysLogger.setQuietMode(false);
-        SysLogger.setInternalDebugging(true);
-        PrintStream out = System.out;
-        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
-        System.setOut(new PrintStream(byteArrayOutputStream));
-
-        Appender consoleAppender = LoggingBuilder.newAppenderBuilder()
-            .withConsoleAppender(LoggingBuilder.SYSTEM_OUT)
-            .withLayout(LoggingBuilder.newLayoutBuilder().withDefaultLayout().build()).build();
-
-        LoggingBuilder.ConsoleAppender consoleAppender1 = (LoggingBuilder.ConsoleAppender) consoleAppender;
-        String target = consoleAppender1.getTarget();
-        Assert.assertTrue(target.equals(LoggingBuilder.SYSTEM_OUT));
-
-        Layout layout = consoleAppender.getLayout();
-        Assert.assertTrue(layout instanceof LoggingBuilder.DefaultLayout);
-
-        Logger consoleLogger = Logger.getLogger("ConsoleLogger");
-        consoleLogger.setAdditivity(false);
-        consoleLogger.addAppender(consoleAppender);
-        consoleLogger.setLevel(Level.INFO);
-
-        Logger.getRootLogger().addAppender(consoleAppender);
-        Logger.getLogger(AppenderTest.class).info("this is a AppenderTest log");
-
-        Logger.getLogger("ConsoleLogger").info("console info Message");
-        Logger.getLogger("ConsoleLogger").error("console error Message", new RuntimeException());
-        Logger.getLogger("ConsoleLogger").debug("console debug message");
-        System.setOut(out);
-        consoleAppender.close();
-
-        String result = new String(byteArrayOutputStream.toByteArray());
-
-        Assert.assertTrue(result.contains("info"));
-        Assert.assertTrue(result.contains("RuntimeException"));
-        Assert.assertTrue(!result.contains("debug"));
-        Assert.assertTrue(result.contains("AppenderTest"));
-    }
-
-    @Test
-    public void testInnerFile() throws IOException {
-        String file = loggingDir + "/logger.log";
-
-        Logger fileLogger = Logger.getLogger("fileLogger");
-
-        Appender myappender = LoggingBuilder.newAppenderBuilder()
-            .withDailyFileRollingAppender(file, "'.'yyyy-MM-dd")
-            .withName("myappender")
-            .withLayout(LoggingBuilder.newLayoutBuilder().withDefaultLayout().build()).build();
-
-        fileLogger.addAppender(myappender);
-
-        Logger.getLogger("fileLogger").setLevel(Level.INFO);
-
-        Logger.getLogger("fileLogger").info("fileLogger info Message");
-        Logger.getLogger("fileLogger").error("fileLogger error Message", new RuntimeException());
-        Logger.getLogger("fileLogger").debug("fileLogger debug message");
-
-        myappender.close();
-
-        String content = readFile(file);
-
-        Assert.assertTrue(content.contains("info"));
-        Assert.assertTrue(content.contains("RuntimeException"));
-        Assert.assertTrue(!content.contains("debug"));
-    }
-
-
-
-    @Test
-    public void asyncAppenderTest() {
-        Appender appender = LoggingBuilder.newAppenderBuilder().withAsync(false, 1024)
-            .withConsoleAppender(LoggingBuilder.SYSTEM_OUT)
-            .withLayout(LoggingBuilder.newLayoutBuilder().withDefaultLayout().build()).build();
-        Assert.assertTrue(appender instanceof LoggingBuilder.AsyncAppender);
-        LoggingBuilder.AsyncAppender asyncAppender = (LoggingBuilder.AsyncAppender) appender;
-        Assert.assertTrue(!asyncAppender.getBlocking());
-        Assert.assertTrue(asyncAppender.getBufferSize() > 0);
-    }
-
-    @Test
-    public void testWriteAppender() {
-        LoggingBuilder.WriterAppender writerAppender = new LoggingBuilder.WriterAppender();
-        writerAppender.setImmediateFlush(true);
-        Assert.assertTrue(writerAppender.getImmediateFlush());
-    }
-
-    @Test
-    public void testFileAppender() throws IOException {
-        LoggingBuilder.FileAppender fileAppender = new LoggingBuilder.FileAppender(
-            new LoggingBuilder.SimpleLayout(), loggingDir + "/simple.log", true);
-        fileAppender.setBufferSize(1024);
-        int bufferSize = fileAppender.getBufferSize();
-        boolean bufferedIO = fileAppender.getBufferedIO();
-        Assert.assertTrue(!bufferedIO);
-        Assert.assertTrue(bufferSize > 0);
-        Assert.assertTrue(fileAppender.getAppend());
-
-        LoggingBuilder.RollingFileAppender rollingFileAppender = new LoggingBuilder.RollingFileAppender();
-        rollingFileAppender.setImmediateFlush(true);
-        rollingFileAppender.setMaximumFileSize(1024 * 1024);
-        rollingFileAppender.setMaxBackupIndex(10);
-        rollingFileAppender.setAppend(true);
-        rollingFileAppender.setFile(loggingDir + "/rolling_file.log");
-        rollingFileAppender.setName("myRollingFileAppender");
-
-        rollingFileAppender.activateOptions();
-
-        Assert.assertTrue(rollingFileAppender.getMaximumFileSize() > 0);
-        Assert.assertTrue(rollingFileAppender.getMaxBackupIndex() == 10);
-    }
-
-    @Test
-    public void testDailyRollingAppender() {
-        LoggingBuilder.DailyRollingFileAppender dailyRollingFileAppender = new LoggingBuilder.DailyRollingFileAppender();
-        dailyRollingFileAppender.setFile(loggingDir + "/daily.log");
-        dailyRollingFileAppender.setName("dailyAppender");
-        dailyRollingFileAppender.setAppend(true);
-        dailyRollingFileAppender.setDatePattern("'.'yyyy-mm-dd");
-        String datePattern = dailyRollingFileAppender.getDatePattern();
-        Assert.assertTrue(datePattern != null);
-        dailyRollingFileAppender.activateOptions();
-    }
-
-}
-
-
diff --git a/logging/src/test/java/org/apache/rocketmq/logging/inner/LayoutTest.java b/logging/src/test/java/org/apache/rocketmq/logging/inner/LayoutTest.java
deleted file mode 100644
index c48be1d..0000000
--- a/logging/src/test/java/org/apache/rocketmq/logging/inner/LayoutTest.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.rocketmq.logging.inner;
-
-import org.apache.rocketmq.logging.BasicLoggerTest;
-import org.junit.Assert;
-import org.junit.Test;
-
-public class LayoutTest extends BasicLoggerTest {
-
-    @Test
-    public void testSimpleLayout() {
-        Layout layout = LoggingBuilder.newLayoutBuilder().withSimpleLayout().build();
-        String format = layout.format(loggingEvent);
-        Assert.assertTrue(format.contains("junit"));
-    }
-
-    @Test
-    public void testDefaultLayout() {
-        Layout layout = LoggingBuilder.newLayoutBuilder().withDefaultLayout().build();
-        String format = layout.format(loggingEvent);
-        String contentType = layout.getContentType();
-        Assert.assertTrue(contentType.contains("text"));
-        Assert.assertTrue(format.contains("createLoggingEvent"));
-        Assert.assertTrue(format.contains("createLogging error"));
-        Assert.assertTrue(format.contains(Thread.currentThread().getName()));
-    }
-
-    @Test
-    public void testLogFormat() {
-        Layout innerLayout = LoggingBuilder.newLayoutBuilder().withDefaultLayout().build();
-
-        LoggingEvent loggingEvent = new LoggingEvent(Logger.class.getName(), logger, org.apache.rocketmq.logging.inner.Level.INFO,
-            "junit test error", null);
-        String format = innerLayout.format(loggingEvent);
-    }
-}
diff --git a/logging/src/test/java/org/apache/rocketmq/logging/inner/LevelTest.java b/logging/src/test/java/org/apache/rocketmq/logging/inner/LevelTest.java
deleted file mode 100644
index 297523a..0000000
--- a/logging/src/test/java/org/apache/rocketmq/logging/inner/LevelTest.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.rocketmq.logging.inner;
-
-import org.junit.Assert;
-import org.junit.Test;
-
-public class LevelTest {
-
-    @Test
-    public void levelTest() {
-        Level info = Level.toLevel("info");
-        Level error = Level.toLevel(3);
-        Assert.assertTrue(error != null && info != null);
-    }
-
-    @Test
-    public void loggerLevel() {
-        Level level = Logger.getRootLogger().getLevel();
-        Assert.assertTrue(level != null);
-    }
-}
diff --git a/logging/src/test/java/org/apache/rocketmq/logging/inner/LoggerRepositoryTest.java b/logging/src/test/java/org/apache/rocketmq/logging/inner/LoggerRepositoryTest.java
deleted file mode 100644
index 6a56c20..0000000
--- a/logging/src/test/java/org/apache/rocketmq/logging/inner/LoggerRepositoryTest.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.rocketmq.logging.inner;
-
-import org.apache.rocketmq.logging.BasicLoggerTest;
-import org.junit.Assert;
-import org.junit.Test;
-
-import java.util.Enumeration;
-
-public class LoggerRepositoryTest extends BasicLoggerTest {
-
-    @Test
-    public void testLoggerRepository() {
-        Logger.getRepository().setLogLevel(Level.INFO);
-
-        String file = loggingDir + "/repo.log";
-        Logger fileLogger = Logger.getLogger("repoLogger");
-
-        Appender myappender = LoggingBuilder.newAppenderBuilder()
-            .withDailyFileRollingAppender(file, "'.'yyyy-MM-dd")
-            .withName("repoAppender")
-            .withLayout(LoggingBuilder.newLayoutBuilder().withDefaultLayout().build()).build();
-
-        fileLogger.addAppender(myappender);
-        Logger.getLogger("repoLogger").setLevel(Level.INFO);
-        Logger repoLogger = Logger.getRepository().exists("repoLogger");
-        Assert.assertTrue(repoLogger != null);
-        Enumeration currentLoggers = Logger.getRepository().getCurrentLoggers();
-        Level logLevel = Logger.getRepository().getLogLevel();
-        Assert.assertTrue(logLevel.equals(Level.INFO));
-//        Logger.getRepository().shutdown();
-    }
-}
diff --git a/logging/src/test/java/org/apache/rocketmq/logging/inner/LoggerTest.java b/logging/src/test/java/org/apache/rocketmq/logging/inner/LoggerTest.java
deleted file mode 100644
index 904c632..0000000
--- a/logging/src/test/java/org/apache/rocketmq/logging/inner/LoggerTest.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.rocketmq.logging.inner;
-
-import org.apache.rocketmq.logging.BasicLoggerTest;
-import org.apache.rocketmq.logging.InnerLoggerFactory;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.PrintStream;
-
-public class LoggerTest extends BasicLoggerTest {
-
-
-    @Before
-    public void init() {
-        InternalLoggerFactory.setCurrentLoggerType(InnerLoggerFactory.LOGGER_INNER);
-    }
-
-    @Test
-    public void testInnerConsoleLogger() throws IOException {
-        PrintStream out = System.out;
-        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
-        System.setOut(new PrintStream(byteArrayOutputStream));
-
-        Appender consoleAppender = LoggingBuilder.newAppenderBuilder()
-            .withConsoleAppender(LoggingBuilder.SYSTEM_OUT)
-            .withLayout(LoggingBuilder.newLayoutBuilder().withDefaultLayout().build()).build();
-
-        Logger.getLogger("ConsoleLogger").addAppender(consoleAppender);
-        Logger.getLogger("ConsoleLogger").setLevel(Level.INFO);
-
-        InternalLogger consoleLogger1 = InternalLoggerFactory.getLogger("ConsoleLogger");
-        consoleLogger1.info("console info Message");
-        consoleLogger1.error("console error Message", new RuntimeException());
-        consoleLogger1.debug("console debug message");
-
-        consoleLogger1.info("console {} test", "simple");
-        consoleLogger1.info("[WATERMARK] Send Queue Size: {} SlowTimeMills: {}", 1, 300);
-        consoleLogger1.info("new consumer connected, group: {} {} {} channel: {}", "mygroup", "orderly",
-            "broudcast", new RuntimeException("simple object"));
-
-        System.setOut(out);
-        consoleAppender.close();
-
-        String result = new String(byteArrayOutputStream.toByteArray());
-
-        Assert.assertTrue(result.contains("info"));
-        Assert.assertTrue(result.contains("RuntimeException"));
-        Assert.assertTrue(result.contains("WATERMARK"));
-        Assert.assertTrue(result.contains("consumer"));
-        Assert.assertTrue(result.contains("broudcast"));
-        Assert.assertTrue(result.contains("simple test"));
-        Assert.assertTrue(!result.contains("debug"));
-    }
-
-    @Test
-    public void testInnerFileLogger() throws IOException {
-        String file = loggingDir + "/inner.log";
-
-        Logger fileLogger = Logger.getLogger("innerLogger");
-
-        Appender myappender = LoggingBuilder.newAppenderBuilder()
-            .withDailyFileRollingAppender(file, "'.'yyyy-MM-dd")
-            .withName("innerAppender")
-            .withLayout(LoggingBuilder.newLayoutBuilder().withDefaultLayout().build()).build();
-
-        fileLogger.addAppender(myappender);
-        fileLogger.setLevel(Level.INFO);
-
-        InternalLogger innerLogger = InternalLoggerFactory.getLogger("innerLogger");
-
-        innerLogger.info("fileLogger info Message");
-        innerLogger.error("fileLogger error Message", new RuntimeException());
-        innerLogger.debug("fileLogger debug message");
-
-        myappender.close();
-
-        String content = readFile(file);
-
-        Assert.assertTrue(content.contains("info"));
-        Assert.assertTrue(content.contains("RuntimeException"));
-        Assert.assertTrue(!content.contains("debug"));
-    }
-
-    @After
-    public void close() {
-        InternalLoggerFactory.setCurrentLoggerType(null);
-    }
-}
diff --git a/logging/src/test/java/org/apache/rocketmq/logging/inner/LoggingBuilderTest.java b/logging/src/test/java/org/apache/rocketmq/logging/inner/LoggingBuilderTest.java
deleted file mode 100644
index e3dbb14..0000000
--- a/logging/src/test/java/org/apache/rocketmq/logging/inner/LoggingBuilderTest.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.rocketmq.logging.inner;
-
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.FilenameFilter;
-import java.io.PrintStream;
-
-import org.apache.rocketmq.logging.BasicLoggerTest;
-import org.junit.Assert;
-import org.junit.Test;
-
-public class LoggingBuilderTest extends BasicLoggerTest {
-
-    @Test
-    public void testConsole() {
-        PrintStream out = System.out;
-        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
-        System.setOut(new PrintStream(byteArrayOutputStream));
-
-        Appender consoleAppender = LoggingBuilder.newAppenderBuilder()
-            .withConsoleAppender(LoggingBuilder.SYSTEM_OUT)
-            .withLayout(LoggingBuilder.newLayoutBuilder().withDefaultLayout().build()).build();
-        consoleAppender.doAppend(loggingEvent);
-        String result = new String(byteArrayOutputStream.toByteArray());
-        System.setOut(out);
-
-        Assert.assertTrue(result.contains(loggingEvent.getMessage().toString()));
-
-    }
-
-    @Test
-    public void testFileAppender() throws InterruptedException {
-        String logFile = loggingDir + "/file.log";
-        Appender rollingFileAppender = LoggingBuilder.newAppenderBuilder().withAsync(false, 102400)
-            .withFileAppender(logFile).withLayout(LoggingBuilder.newLayoutBuilder().withDefaultLayout().build()).build();
-
-        for (int i = 0; i < 10; i++) {
-            rollingFileAppender.doAppend(loggingEvent);
-        }
-        rollingFileAppender.close();
-
-        File file = new File(logFile);
-        Assert.assertTrue(file.length() > 0);
-    }
-
-    @Test
-    public void testRollingFileAppender() throws InterruptedException {
-
-        String rollingFile = loggingDir + "/rolling.log";
-        Appender rollingFileAppender = LoggingBuilder.newAppenderBuilder().withAsync(false, 1024)
-            .withRollingFileAppender(rollingFile, "1024", 5)
-            .withLayout(LoggingBuilder.newLayoutBuilder().withDefaultLayout().build()).build();
-
-        for (int i = 0; i < 100; i++) {
-            rollingFileAppender.doAppend(loggingEvent);
-        }
-        rollingFileAppender.close();
-
-        int cc = 0;
-        for (int i = 0; i < 5; i++) {
-            File file;
-            if (i == 0) {
-                file = new File(rollingFile);
-            } else {
-                file = new File(rollingFile + "." + i);
-            }
-            if (file.exists() && file.length() > 0) {
-                cc += 1;
-            }
-        }
-        Assert.assertTrue(cc >= 2);
-    }
-
-    //@Test
-    public void testDailyRollingFileAppender() throws InterruptedException {
-        String rollingFile = loggingDir + "/daily-rolling--222.log";
-        Appender rollingFileAppender = LoggingBuilder.newAppenderBuilder().withAsync(false, 1024)
-            .withDailyFileRollingAppender(rollingFile, "'.'yyyy-MM-dd_HH-mm-ss-SSS")
-            .withLayout(LoggingBuilder.newLayoutBuilder().withDefaultLayout().build()).build();
-
-        for (int i = 0; i < 100; i++) {
-            rollingFileAppender.doAppend(loggingEvent);
-        }
-
-        rollingFileAppender.close();
-
-        File file = new File(loggingDir);
-        String[] list = file.list(new FilenameFilter() {
-            @Override
-            public boolean accept(File dir, String name) {
-                return name.startsWith("daily-rolling--222.log");
-            }
-        });
-        Assert.assertTrue(list.length > 0);
-    }
-}
diff --git a/logging/src/test/java/org/apache/rocketmq/logging/inner/MessageFormatterTest.java b/logging/src/test/java/org/apache/rocketmq/logging/inner/MessageFormatterTest.java
deleted file mode 100644
index 5d3d868..0000000
--- a/logging/src/test/java/org/apache/rocketmq/logging/inner/MessageFormatterTest.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.rocketmq.logging.inner;
-
-
-import org.apache.rocketmq.logging.InnerLoggerFactory;
-import org.junit.Assert;
-import org.junit.Test;
-
-public class MessageFormatterTest {
-
-    @Test
-    public void formatTest() {
-        InnerLoggerFactory.FormattingTuple logging = InnerLoggerFactory.MessageFormatter.format("this is {},and {}", "logging", 6546);
-        String message = logging.getMessage();
-        Assert.assertTrue(message.contains("logging"));
-
-        InnerLoggerFactory.FormattingTuple format = InnerLoggerFactory.MessageFormatter.format("cause exception {}", 143545, new RuntimeException());
-        String message1 = format.getMessage();
-        Throwable throwable = format.getThrowable();
-        Assert.assertTrue(throwable != null);
-    }
-
-}
diff --git a/logging/src/test/resources/logback_test.xml b/logging/src/test/resources/logback_test.xml
deleted file mode 100644
index c1ab200..0000000
--- a/logging/src/test/resources/logback_test.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-  -->
-
-<configuration>
-    <appender name="RocketmqClientAppender"
-              class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <file>${loggingDir}/logback_test.log</file>
-        <append>true</append>
-        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
-            <fileNamePattern>${loggingDir}/logback_test.%i.log
-            </fileNamePattern>
-            <minIndex>1</minIndex>
-            <maxIndex>5</maxIndex>
-        </rollingPolicy>
-        <triggeringPolicy
-            class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
-            <maxFileSize>10MB</maxFileSize>
-        </triggeringPolicy>
-        <encoder>
-            <pattern>%d{yyy-MM-dd HH:mm:ss,GMT+8} %p %t - %m%n</pattern>
-            <charset class="java.nio.charset.Charset">UTF-8</charset>
-        </encoder>
-    </appender>
-
-    <logger name="Slf4jTestLogger" additivity="false">
-        <level value="INFO"/>
-        <appender-ref ref="RocketmqClientAppender"/>
-    </logger>
-
-
-</configuration>
diff --git a/namesrv/BUILD.bazel b/namesrv/BUILD.bazel
index d6efa8c..a644741 100644
--- a/namesrv/BUILD.bazel
+++ b/namesrv/BUILD.bazel
@@ -22,7 +22,6 @@
     visibility = ["//visibility:public"],
     deps = [
         "//remoting",
-        "//logging", 
         "//srvutil",
         "//tools",
         "//client",
@@ -40,6 +39,7 @@
         "@maven//:org_bouncycastle_bcpkix_jdk15on",
         "@maven//:commons_cli_commons_cli",
         "@maven//:com_google_guava_guava",
+        "@maven//:io_github_aliyun_mq_rocketmq_slf4j_api",
     ],
 )
 
@@ -50,7 +50,6 @@
     deps = [
         ":namesrv",
         "//remoting",
-        "//logging", 
         "//srvutil",
         "//tools",
         "//client",
@@ -63,6 +62,7 @@
         "@maven//:com_alibaba_fastjson",      
         "@maven//:org_slf4j_slf4j_api",
         "@maven//:ch_qos_logback_logback_core",  
+        "@maven//:io_github_aliyun_mq_rocketmq_slf4j_api",
     ],
     resources = glob(["src/test/resources/certs/*.pem"]) + glob(["src/test/resources/certs/*.key"])
 )
diff --git a/namesrv/pom.xml b/namesrv/pom.xml
index cb4b637..7e932d8 100644
--- a/namesrv/pom.xml
+++ b/namesrv/pom.xml
@@ -15,7 +15,9 @@
   limitations under the License.
   -->
 
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <parent>
         <groupId>org.apache.rocketmq</groupId>
         <artifactId>rocketmq-all</artifactId>
@@ -35,26 +37,22 @@
         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>rocketmq-controller</artifactId>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>rocketmq-client</artifactId>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>rocketmq-tools</artifactId>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>rocketmq-srvutil</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>ch.qos.logback</groupId>
-            <artifactId>logback-classic</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-api</artifactId>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>org.openjdk.jmh</groupId>
diff --git a/namesrv/src/main/java/org/apache/rocketmq/namesrv/NamesrvController.java b/namesrv/src/main/java/org/apache/rocketmq/namesrv/NamesrvController.java
index 4476b0f..d9fbd1c 100644
--- a/namesrv/src/main/java/org/apache/rocketmq/namesrv/NamesrvController.java
+++ b/namesrv/src/main/java/org/apache/rocketmq/namesrv/NamesrvController.java
@@ -31,8 +31,8 @@
 import org.apache.rocketmq.common.future.FutureTaskExt;
 import org.apache.rocketmq.common.namesrv.NamesrvConfig;
 import org.apache.rocketmq.common.utils.NetworkUtil;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.namesrv.kvconfig.KVConfigManager;
 import org.apache.rocketmq.namesrv.processor.ClientRequestProcessor;
 import org.apache.rocketmq.namesrv.processor.ClusterTestRequestProcessor;
@@ -54,8 +54,8 @@
 import org.apache.rocketmq.srvutil.FileWatchService;
 
 public class NamesrvController {
-    private static final InternalLogger LOGGER = InternalLoggerFactory.getLogger(LoggerName.NAMESRV_LOGGER_NAME);
-    private static final InternalLogger WATER_MARK_LOG = InternalLoggerFactory.getLogger(LoggerName.NAMESRV_WATER_MARK_LOGGER_NAME);
+    private static final Logger LOGGER = LoggerFactory.getLogger(LoggerName.NAMESRV_LOGGER_NAME);
+    private static final Logger WATER_MARK_LOG = LoggerFactory.getLogger(LoggerName.NAMESRV_WATER_MARK_LOGGER_NAME);
 
     private final NamesrvConfig namesrvConfig;
 
diff --git a/namesrv/src/main/java/org/apache/rocketmq/namesrv/NamesrvStartup.java b/namesrv/src/main/java/org/apache/rocketmq/namesrv/NamesrvStartup.java
index 62a3d11..c2e5190 100644
--- a/namesrv/src/main/java/org/apache/rocketmq/namesrv/NamesrvStartup.java
+++ b/namesrv/src/main/java/org/apache/rocketmq/namesrv/NamesrvStartup.java
@@ -16,8 +16,6 @@
  */
 package org.apache.rocketmq.namesrv;
 
-import ch.qos.logback.classic.LoggerContext;
-import ch.qos.logback.classic.joran.JoranConfigurator;
 import java.io.BufferedInputStream;
 import java.io.InputStream;
 import java.nio.file.Files;
@@ -34,18 +32,17 @@
 import org.apache.rocketmq.common.constant.LoggerName;
 import org.apache.rocketmq.common.namesrv.NamesrvConfig;
 import org.apache.rocketmq.controller.ControllerManager;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
 import org.apache.rocketmq.remoting.netty.NettyClientConfig;
 import org.apache.rocketmq.remoting.netty.NettyServerConfig;
 import org.apache.rocketmq.remoting.protocol.RemotingCommand;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.srvutil.ServerUtil;
 import org.apache.rocketmq.srvutil.ShutdownHookThread;
-import org.slf4j.LoggerFactory;
 
 public class NamesrvStartup {
 
-    private static InternalLogger log;
+    private static Logger log;
     private static Properties properties = null;
     private static NamesrvConfig namesrvConfig = null;
     private static NettyServerConfig nettyServerConfig = null;
@@ -130,13 +127,7 @@
             System.exit(-2);
         }
 
-        LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
-        JoranConfigurator configurator = new JoranConfigurator();
-        configurator.setContext(lc);
-        lc.reset();
-        configurator.doConfigure(namesrvConfig.getRocketmqHome() + "/conf/logback_namesrv.xml");
-
-        log = InternalLoggerFactory.getLogger(LoggerName.NAMESRV_LOGGER_NAME);
+        log = LoggerFactory.getLogger(LoggerName.NAMESRV_LOGGER_NAME);
 
         MixAll.printObjectProperties(log, namesrvConfig);
         MixAll.printObjectProperties(log, nettyServerConfig);
diff --git a/namesrv/src/main/java/org/apache/rocketmq/namesrv/kvconfig/KVConfigManager.java b/namesrv/src/main/java/org/apache/rocketmq/namesrv/kvconfig/KVConfigManager.java
index b965bfb..e4b9be5 100644
--- a/namesrv/src/main/java/org/apache/rocketmq/namesrv/kvconfig/KVConfigManager.java
+++ b/namesrv/src/main/java/org/apache/rocketmq/namesrv/kvconfig/KVConfigManager.java
@@ -23,13 +23,13 @@
 import java.util.concurrent.locks.ReentrantReadWriteLock;
 import org.apache.rocketmq.common.MixAll;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.namesrv.NamesrvController;
 import org.apache.rocketmq.remoting.protocol.body.KVTable;
 
 public class KVConfigManager {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.NAMESRV_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.NAMESRV_LOGGER_NAME);
 
     private final NamesrvController namesrvController;
 
diff --git a/namesrv/src/main/java/org/apache/rocketmq/namesrv/processor/ClientRequestProcessor.java b/namesrv/src/main/java/org/apache/rocketmq/namesrv/processor/ClientRequestProcessor.java
index 55c0cf0..d7782ad 100644
--- a/namesrv/src/main/java/org/apache/rocketmq/namesrv/processor/ClientRequestProcessor.java
+++ b/namesrv/src/main/java/org/apache/rocketmq/namesrv/processor/ClientRequestProcessor.java
@@ -25,8 +25,8 @@
 import org.apache.rocketmq.common.constant.LoggerName;
 import org.apache.rocketmq.common.help.FAQUrl;
 import org.apache.rocketmq.common.namesrv.NamesrvUtil;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.namesrv.NamesrvController;
 import org.apache.rocketmq.remoting.exception.RemotingCommandException;
 import org.apache.rocketmq.remoting.netty.NettyRequestProcessor;
@@ -37,7 +37,7 @@
 
 public class ClientRequestProcessor implements NettyRequestProcessor {
 
-    private static InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.NAMESRV_LOGGER_NAME);
+    private static Logger log = LoggerFactory.getLogger(LoggerName.NAMESRV_LOGGER_NAME);
 
     protected NamesrvController namesrvController;
     private long startupTimeMillis;
diff --git a/namesrv/src/main/java/org/apache/rocketmq/namesrv/processor/ClusterTestRequestProcessor.java b/namesrv/src/main/java/org/apache/rocketmq/namesrv/processor/ClusterTestRequestProcessor.java
index 271c336..07103ed 100644
--- a/namesrv/src/main/java/org/apache/rocketmq/namesrv/processor/ClusterTestRequestProcessor.java
+++ b/namesrv/src/main/java/org/apache/rocketmq/namesrv/processor/ClusterTestRequestProcessor.java
@@ -21,8 +21,8 @@
 import org.apache.rocketmq.common.constant.LoggerName;
 import org.apache.rocketmq.common.help.FAQUrl;
 import org.apache.rocketmq.common.namesrv.NamesrvUtil;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.namesrv.NamesrvController;
 import org.apache.rocketmq.remoting.exception.RemotingCommandException;
 import org.apache.rocketmq.remoting.protocol.RemotingCommand;
@@ -32,7 +32,7 @@
 import org.apache.rocketmq.tools.admin.DefaultMQAdminExt;
 
 public class ClusterTestRequestProcessor extends ClientRequestProcessor {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.NAMESRV_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.NAMESRV_LOGGER_NAME);
     private final DefaultMQAdminExt adminExt;
     private final String productEnvName;
 
diff --git a/namesrv/src/main/java/org/apache/rocketmq/namesrv/processor/DefaultRequestProcessor.java b/namesrv/src/main/java/org/apache/rocketmq/namesrv/processor/DefaultRequestProcessor.java
index 74a0693..0b16c47 100644
--- a/namesrv/src/main/java/org/apache/rocketmq/namesrv/processor/DefaultRequestProcessor.java
+++ b/namesrv/src/main/java/org/apache/rocketmq/namesrv/processor/DefaultRequestProcessor.java
@@ -28,8 +28,8 @@
 import org.apache.rocketmq.common.UtilAll;
 import org.apache.rocketmq.common.constant.LoggerName;
 import org.apache.rocketmq.common.namesrv.NamesrvUtil;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.namesrv.NamesrvController;
 import org.apache.rocketmq.remoting.common.RemotingHelper;
 import org.apache.rocketmq.remoting.exception.RemotingCommandException;
@@ -68,7 +68,7 @@
 import org.apache.rocketmq.remoting.protocol.route.TopicRouteData;
 
 public class DefaultRequestProcessor implements NettyRequestProcessor {
-    private static InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.NAMESRV_LOGGER_NAME);
+    private static Logger log = LoggerFactory.getLogger(LoggerName.NAMESRV_LOGGER_NAME);
 
     protected final NamesrvController namesrvController;
 
diff --git a/namesrv/src/main/java/org/apache/rocketmq/namesrv/routeinfo/BatchUnregistrationService.java b/namesrv/src/main/java/org/apache/rocketmq/namesrv/routeinfo/BatchUnregistrationService.java
index ad969e4..cd5c3f3 100644
--- a/namesrv/src/main/java/org/apache/rocketmq/namesrv/routeinfo/BatchUnregistrationService.java
+++ b/namesrv/src/main/java/org/apache/rocketmq/namesrv/routeinfo/BatchUnregistrationService.java
@@ -24,8 +24,8 @@
 import org.apache.rocketmq.common.ServiceThread;
 import org.apache.rocketmq.common.constant.LoggerName;
 import org.apache.rocketmq.common.namesrv.NamesrvConfig;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.protocol.header.namesrv.UnRegisterBrokerRequestHeader;
 
 /**
@@ -35,7 +35,7 @@
 public class BatchUnregistrationService extends ServiceThread {
     private final RouteInfoManager routeInfoManager;
     private BlockingQueue<UnRegisterBrokerRequestHeader> unregistrationQueue;
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.NAMESRV_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.NAMESRV_LOGGER_NAME);
 
     public BatchUnregistrationService(RouteInfoManager routeInfoManager, NamesrvConfig namesrvConfig) {
         this.routeInfoManager = routeInfoManager;
diff --git a/namesrv/src/main/java/org/apache/rocketmq/namesrv/routeinfo/RouteInfoManager.java b/namesrv/src/main/java/org/apache/rocketmq/namesrv/routeinfo/RouteInfoManager.java
index 8bca701..dd3411d 100644
--- a/namesrv/src/main/java/org/apache/rocketmq/namesrv/routeinfo/RouteInfoManager.java
+++ b/namesrv/src/main/java/org/apache/rocketmq/namesrv/routeinfo/RouteInfoManager.java
@@ -42,8 +42,8 @@
 import org.apache.rocketmq.common.sysflag.TopicSysFlag;
 import org.apache.rocketmq.common.topic.TopicValidator;
 import org.apache.rocketmq.common.utils.ConcurrentHashMapUtils;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.namesrv.NamesrvController;
 import org.apache.rocketmq.remoting.common.RemotingHelper;
 import org.apache.rocketmq.remoting.exception.RemotingConnectException;
@@ -67,7 +67,7 @@
 import org.apache.rocketmq.remoting.protocol.statictopic.TopicQueueMappingInfo;
 
 public class RouteInfoManager {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.NAMESRV_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.NAMESRV_LOGGER_NAME);
     private final static long DEFAULT_BROKER_CHANNEL_EXPIRED_TIME = 1000 * 60 * 2;
     private final ReadWriteLock lock = new ReentrantReadWriteLock();
     private final Map<String/* topic */, Map<String, QueueData>> topicQueueTable;
diff --git a/distribution/conf/logback_namesrv.xml b/namesrv/src/main/resources/rmq.namesrv.logback.xml
similarity index 76%
rename from distribution/conf/logback_namesrv.xml
rename to namesrv/src/main/resources/rmq.namesrv.logback.xml
index f8e0c59..f8ac6fb 100644
--- a/distribution/conf/logback_namesrv.xml
+++ b/namesrv/src/main/resources/rmq.namesrv.logback.xml
@@ -18,16 +18,16 @@
 
 <configuration scan="true" scanPeriod="30 seconds">
     <appender name="DefaultAppender"
-              class="ch.qos.logback.core.rolling.RollingFileAppender">
+              class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.RollingFileAppender">
         <file>${user.home}/logs/rocketmqlogs/namesrv_default.log</file>
         <append>true</append>
-        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+        <rollingPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
             <fileNamePattern>${user.home}/logs/rocketmqlogs/otherdays/namesrv_default.%i.log.gz</fileNamePattern>
             <minIndex>1</minIndex>
             <maxIndex>5</maxIndex>
         </rollingPolicy>
         <triggeringPolicy
-            class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+            class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
             <maxFileSize>100MB</maxFileSize>
         </triggeringPolicy>
         <encoder>
@@ -37,16 +37,16 @@
     </appender>
 
     <appender name="RocketmqNamesrvAppender_inner"
-              class="ch.qos.logback.core.rolling.RollingFileAppender">
+              class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.RollingFileAppender">
         <file>${user.home}/logs/rocketmqlogs/namesrv.log</file>
         <append>true</append>
-        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+        <rollingPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
             <fileNamePattern>${user.home}/logs/rocketmqlogs/otherdays/namesrv.%i.log.gz</fileNamePattern>
             <minIndex>1</minIndex>
             <maxIndex>5</maxIndex>
         </rollingPolicy>
         <triggeringPolicy
-            class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+            class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
             <maxFileSize>100MB</maxFileSize>
         </triggeringPolicy>
         <encoder>
@@ -54,21 +54,21 @@
             <charset class="java.nio.charset.Charset">UTF-8</charset>
         </encoder>
     </appender>
-    <appender name="RocketmqNamesrvAppender" class="ch.qos.logback.classic.AsyncAppender">
+    <appender name="RocketmqNamesrvAppender" class="org.apache.rocketmq.shade.ch.qos.logback.classic.AsyncAppender">
         <appender-ref ref="RocketmqNamesrvAppender_inner"/>
         <discardingThreshold>0</discardingThreshold>
     </appender>
 
     <appender name="RocketmqTrafficAppender_inner"
-              class="ch.qos.logback.core.rolling.RollingFileAppender">
+              class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.RollingFileAppender">
         <file>${user.home}/logs/rocketmqlogs/namesrv_traffic.log</file>
         <append>true</append>
-        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+        <rollingPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
             <fileNamePattern>${user.home}/logs/rocketmqlogs/otherdays/namesrv_traffic.%i.log.gz</fileNamePattern>
             <minIndex>1</minIndex>
             <maxIndex>10</maxIndex>
         </rollingPolicy>
-        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+        <triggeringPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
             <maxFileSize>100MB</maxFileSize>
         </triggeringPolicy>
         <encoder>
@@ -76,11 +76,11 @@
             <charset class="java.nio.charset.Charset">UTF-8</charset>
         </encoder>
     </appender>
-    <appender name="RocketmqTrafficAppender" class="ch.qos.logback.classic.AsyncAppender">
+    <appender name="RocketmqTrafficAppender" class="org.apache.rocketmq.shade.ch.qos.logback.classic.AsyncAppender">
         <appender-ref ref="RocketmqTrafficAppender_inner"/>
     </appender>
 
-    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+    <appender name="STDOUT" class="org.apache.rocketmq.shade.ch.qos.logback.core.ConsoleAppender">
         <append>true</append>
         <encoder>
             <pattern>%d{yyy-MM-dd HH:mm:ss,GMT+8} %p %t - %m%n</pattern>
diff --git a/namesrv/src/test/java/org/apache/rocketmq/namesrv/processor/RequestProcessorTest.java b/namesrv/src/test/java/org/apache/rocketmq/namesrv/processor/RequestProcessorTest.java
index a5995e2..e1ddb6f 100644
--- a/namesrv/src/test/java/org/apache/rocketmq/namesrv/processor/RequestProcessorTest.java
+++ b/namesrv/src/test/java/org/apache/rocketmq/namesrv/processor/RequestProcessorTest.java
@@ -28,7 +28,7 @@
 import org.apache.rocketmq.common.TopicConfig;
 import org.apache.rocketmq.common.UtilAll;
 import org.apache.rocketmq.common.namesrv.NamesrvConfig;
-import org.apache.rocketmq.logging.InternalLogger;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
 import org.apache.rocketmq.namesrv.NamesrvController;
 import org.apache.rocketmq.namesrv.routeinfo.RouteInfoManager;
 import org.apache.rocketmq.remoting.exception.RemotingCommandException;
@@ -67,7 +67,7 @@
 
     private RouteInfoManager routeInfoManager;
 
-    private InternalLogger logger;
+    private Logger logger;
 
     @Before
     public void init() throws Exception {
@@ -88,7 +88,7 @@
 
         registerRouteInfoManager();
 
-        logger = mock(InternalLogger.class);
+        logger = mock(Logger.class);
         setFinalStatic(DefaultRequestProcessor.class.getDeclaredField("log"), logger);
     }
 
diff --git a/namesrv/src/test/java/org/apache/rocketmq/namesrv/routeinfo/GetRouteInfoBenchmark.java b/namesrv/src/test/java/org/apache/rocketmq/namesrv/routeinfo/GetRouteInfoBenchmark.java
index ecbbafe..b453f4d 100644
--- a/namesrv/src/test/java/org/apache/rocketmq/namesrv/routeinfo/GetRouteInfoBenchmark.java
+++ b/namesrv/src/test/java/org/apache/rocketmq/namesrv/routeinfo/GetRouteInfoBenchmark.java
@@ -17,9 +17,6 @@
 
 package org.apache.rocketmq.namesrv.routeinfo;
 
-import ch.qos.logback.classic.LoggerContext;
-import ch.qos.logback.classic.joran.JoranConfigurator;
-import ch.qos.logback.core.joran.spi.JoranException;
 import io.netty.channel.Channel;
 import java.util.ArrayList;
 import java.util.Random;
@@ -46,7 +43,6 @@
 import org.openjdk.jmh.annotations.TearDown;
 import org.openjdk.jmh.annotations.Threads;
 import org.openjdk.jmh.annotations.Warmup;
-import org.slf4j.LoggerFactory;
 
 import static org.mockito.Mockito.mock;
 
@@ -59,13 +55,7 @@
     private ExecutorService es = Executors.newCachedThreadPool();
 
     @Setup
-    public void setup() throws InterruptedException, JoranException {
-        LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
-        JoranConfigurator configurator = new JoranConfigurator();
-        configurator.setContext(lc);
-        lc.reset();
-        //https://logback.qos.ch/manual/configuration.html
-        lc.setPackagingDataEnabled(false);
+    public void setup() throws InterruptedException {
 
         routeInfoManager = new RouteInfoManager(new NamesrvConfig(), null);
 
diff --git a/namesrv/src/test/java/org/apache/rocketmq/namesrv/routeinfo/RegisterBrokerBenchmark.java b/namesrv/src/test/java/org/apache/rocketmq/namesrv/routeinfo/RegisterBrokerBenchmark.java
index 6ce2d01..0e9cf67 100644
--- a/namesrv/src/test/java/org/apache/rocketmq/namesrv/routeinfo/RegisterBrokerBenchmark.java
+++ b/namesrv/src/test/java/org/apache/rocketmq/namesrv/routeinfo/RegisterBrokerBenchmark.java
@@ -17,9 +17,6 @@
 
 package org.apache.rocketmq.namesrv.routeinfo;
 
-import ch.qos.logback.classic.LoggerContext;
-import ch.qos.logback.classic.joran.JoranConfigurator;
-import ch.qos.logback.core.joran.spi.JoranException;
 import io.netty.channel.Channel;
 import java.util.ArrayList;
 import java.util.Random;
@@ -46,7 +43,6 @@
 import org.openjdk.jmh.annotations.TearDown;
 import org.openjdk.jmh.annotations.Threads;
 import org.openjdk.jmh.annotations.Warmup;
-import org.slf4j.LoggerFactory;
 
 import static org.mockito.Mockito.mock;
 
@@ -62,14 +58,7 @@
     private AtomicLong brokerIndex = new AtomicLong(0);
 
     @Setup
-    public void setup() throws InterruptedException, JoranException {
-        LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
-        JoranConfigurator configurator = new JoranConfigurator();
-        configurator.setContext(lc);
-        lc.reset();
-        //https://logback.qos.ch/manual/configuration.html
-        lc.setPackagingDataEnabled(false);
-
+    public void setup() throws InterruptedException {
         routeInfoManager = new RouteInfoManager(new NamesrvConfig(), null);
 
         // Init 4 clusters and 8 brokers in each cluster
diff --git a/store/src/test/resources/logback-test.xml b/namesrv/src/test/resources/rmq.logback-test.xml
similarity index 64%
copy from store/src/test/resources/logback-test.xml
copy to namesrv/src/test/resources/rmq.logback-test.xml
index a033816..c3ec0d1 100644
--- a/store/src/test/resources/logback-test.xml
+++ b/namesrv/src/test/resources/rmq.logback-test.xml
@@ -17,19 +17,20 @@
   -->
 <configuration>
 
-    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
-        <encoder>
-            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n</pattern>
-            <charset class="java.nio.charset.Charset">UTF-8</charset>
-        </encoder>
+    <appender name="CONSOLE" class="org.apache.rocketmq.shade.ch.qos.logback.core.ConsoleAppender">
+        <layout class="org.apache.rocketmq.shade.ch.qos.logback.classic.PatternLayout">
+            <Pattern>
+                %d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n
+            </Pattern>
+        </layout>
     </appender>
 
-    <logger name="org.apache.rocketmq.store" level="WARN" additivity="false">
-        <appender-ref ref="STDOUT"/>
+    <logger name="org.apache.rocketmq" level="error" additivity="false">
+        <appender-ref ref="CONSOLE"/>
     </logger>
 
-    <root level="OFF">
-        <appender-ref ref="STDOUT"/>
+    <root level="error">
+        <appender-ref ref="CONSOLE"/>
     </root>
 
-</configuration>
+</configuration>
\ No newline at end of file
diff --git a/openmessaging/pom.xml b/openmessaging/pom.xml
index e11f153..9c05cc1 100644
--- a/openmessaging/pom.xml
+++ b/openmessaging/pom.xml
@@ -16,7 +16,9 @@
   limitations under the License.
   -->
 
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <parent>
         <artifactId>rocketmq-all</artifactId>
         <groupId>org.apache.rocketmq</groupId>
@@ -39,6 +41,7 @@
         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>rocketmq-client</artifactId>
+            <version>${project.version}</version>
         </dependency>
     </dependencies>
 </project>
\ No newline at end of file
diff --git a/openmessaging/src/main/java/io/openmessaging/rocketmq/consumer/LocalMessageCache.java b/openmessaging/src/main/java/io/openmessaging/rocketmq/consumer/LocalMessageCache.java
index d2fc678..8e652be 100644
--- a/openmessaging/src/main/java/io/openmessaging/rocketmq/consumer/LocalMessageCache.java
+++ b/openmessaging/src/main/java/io/openmessaging/rocketmq/consumer/LocalMessageCache.java
@@ -35,15 +35,17 @@
 import org.apache.rocketmq.client.consumer.DefaultMQPullConsumer;
 import org.apache.rocketmq.client.exception.MQClientException;
 import org.apache.rocketmq.client.impl.consumer.ProcessQueue;
-import org.apache.rocketmq.client.log.ClientLogger;
 import org.apache.rocketmq.common.ThreadFactoryImpl;
 import org.apache.rocketmq.common.message.MessageAccessor;
 import org.apache.rocketmq.common.message.MessageExt;
 import org.apache.rocketmq.common.message.MessageQueue;
 import org.apache.rocketmq.common.utils.ThreadUtils;
-import org.apache.rocketmq.logging.InternalLogger;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 class LocalMessageCache implements ServiceLifecycle {
+    private static final Logger log = LoggerFactory.getLogger(LocalMessageCache.class);
+
     private final BlockingQueue<ConsumeRequest> consumeRequestCache;
     private final Map<String, ConsumeRequest> consumedRequest;
     private final ConcurrentHashMap<MessageQueue, Long> pullOffsetTable;
@@ -51,8 +53,6 @@
     private final ClientConfig clientConfig;
     private final ScheduledExecutorService cleanExpireMsgExecutors;
 
-    private final static InternalLogger log = ClientLogger.getLog();
-
     LocalMessageCache(final DefaultMQPullConsumer rocketmqPullConsumer, final ClientConfig clientConfig) {
         consumeRequestCache = new LinkedBlockingQueue<>(clientConfig.getRmqPullMessageCacheCapacity());
         this.consumedRequest = new ConcurrentHashMap<>();
diff --git a/openmessaging/src/main/java/io/openmessaging/rocketmq/consumer/PullConsumerImpl.java b/openmessaging/src/main/java/io/openmessaging/rocketmq/consumer/PullConsumerImpl.java
index 945ecfa..a4c73db 100644
--- a/openmessaging/src/main/java/io/openmessaging/rocketmq/consumer/PullConsumerImpl.java
+++ b/openmessaging/src/main/java/io/openmessaging/rocketmq/consumer/PullConsumerImpl.java
@@ -33,13 +33,15 @@
 import org.apache.rocketmq.client.consumer.PullTaskContext;
 import org.apache.rocketmq.client.exception.MQClientException;
 import org.apache.rocketmq.client.impl.consumer.ProcessQueue;
-import org.apache.rocketmq.client.log.ClientLogger;
 import org.apache.rocketmq.common.message.MessageExt;
 import org.apache.rocketmq.common.message.MessageQueue;
-import org.apache.rocketmq.logging.InternalLogger;
 import org.apache.rocketmq.remoting.protocol.LanguageCode;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 public class PullConsumerImpl implements PullConsumer {
+    private static final Logger log = LoggerFactory.getLogger(PullConsumerImpl.class);
+
     private final DefaultMQPullConsumer rocketmqPullConsumer;
     private final KeyValue properties;
     private boolean started = false;
@@ -47,8 +49,6 @@
     private final LocalMessageCache localMessageCache;
     private final ClientConfig clientConfig;
 
-    private final static InternalLogger log = ClientLogger.getLog();
-
     public PullConsumerImpl(final KeyValue properties) {
         this.properties = properties;
         this.clientConfig = BeanUtils.populate(properties, ClientConfig.class);
diff --git a/openmessaging/src/main/java/io/openmessaging/rocketmq/producer/AbstractOMSProducer.java b/openmessaging/src/main/java/io/openmessaging/rocketmq/producer/AbstractOMSProducer.java
index a791498..e032461 100644
--- a/openmessaging/src/main/java/io/openmessaging/rocketmq/producer/AbstractOMSProducer.java
+++ b/openmessaging/src/main/java/io/openmessaging/rocketmq/producer/AbstractOMSProducer.java
@@ -31,9 +31,7 @@
 import io.openmessaging.rocketmq.utils.BeanUtils;
 import org.apache.rocketmq.client.exception.MQBrokerException;
 import org.apache.rocketmq.client.exception.MQClientException;
-import org.apache.rocketmq.client.log.ClientLogger;
 import org.apache.rocketmq.client.producer.DefaultMQProducer;
-import org.apache.rocketmq.logging.InternalLogger;
 import org.apache.rocketmq.remoting.exception.RemotingConnectException;
 import org.apache.rocketmq.remoting.exception.RemotingTimeoutException;
 import org.apache.rocketmq.remoting.protocol.LanguageCode;
@@ -42,7 +40,6 @@
 import static io.openmessaging.rocketmq.utils.OMSUtil.buildInstanceName;
 
 abstract class AbstractOMSProducer implements ServiceLifecycle, MessageFactory {
-    final static InternalLogger log = ClientLogger.getLog();
     final KeyValue properties;
     final DefaultMQProducer rocketmqProducer;
     private boolean started = false;
diff --git a/openmessaging/src/main/java/io/openmessaging/rocketmq/producer/ProducerImpl.java b/openmessaging/src/main/java/io/openmessaging/rocketmq/producer/ProducerImpl.java
index c2b6d3e..02ec119 100644
--- a/openmessaging/src/main/java/io/openmessaging/rocketmq/producer/ProducerImpl.java
+++ b/openmessaging/src/main/java/io/openmessaging/rocketmq/producer/ProducerImpl.java
@@ -30,11 +30,15 @@
 import io.openmessaging.rocketmq.utils.OMSUtil;
 import org.apache.rocketmq.client.producer.SendCallback;
 import org.apache.rocketmq.client.producer.SendStatus;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 import static io.openmessaging.rocketmq.utils.OMSUtil.msgConvert;
 
 public class ProducerImpl extends AbstractOMSProducer implements Producer {
 
+    private static final Logger log = LoggerFactory.getLogger(ProducerImpl.class);
+
     public ProducerImpl(final KeyValue properties) {
         super(properties);
     }
diff --git a/openmessaging/src/main/java/io/openmessaging/rocketmq/promise/DefaultPromise.java b/openmessaging/src/main/java/io/openmessaging/rocketmq/promise/DefaultPromise.java
index feee13f..9499d4f 100644
--- a/openmessaging/src/main/java/io/openmessaging/rocketmq/promise/DefaultPromise.java
+++ b/openmessaging/src/main/java/io/openmessaging/rocketmq/promise/DefaultPromise.java
@@ -19,14 +19,14 @@
 import io.openmessaging.Promise;
 import io.openmessaging.FutureListener;
 import io.openmessaging.exception.OMSRuntimeException;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 import java.util.ArrayList;
 import java.util.List;
 
 public class DefaultPromise<V> implements Promise<V> {
-    private static final InternalLogger LOG = InternalLoggerFactory.getLogger(DefaultPromise.class);
+    private static final Logger LOG = LoggerFactory.getLogger(DefaultPromise.class);
     private final Object lock = new Object();
     private volatile FutureState state = FutureState.DOING;
     private V result = null;
diff --git a/openmessaging/src/main/java/io/openmessaging/rocketmq/utils/BeanUtils.java b/openmessaging/src/main/java/io/openmessaging/rocketmq/utils/BeanUtils.java
index 73a2113..11183ff 100644
--- a/openmessaging/src/main/java/io/openmessaging/rocketmq/utils/BeanUtils.java
+++ b/openmessaging/src/main/java/io/openmessaging/rocketmq/utils/BeanUtils.java
@@ -25,11 +25,11 @@
 import java.util.Properties;
 import java.util.Set;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.rocketmq.client.log.ClientLogger;
-import org.apache.rocketmq.logging.InternalLogger;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 public final class BeanUtils {
-    static InternalLogger log = ClientLogger.getLog();
+    private static final Logger log = LoggerFactory.getLogger(BeanUtils.class);
 
     /**
      * Maps primitive {@code Class}es to their corresponding wrapper {@code Class}.
diff --git a/store/src/test/resources/logback-test.xml b/openmessaging/src/test/resources/rmq.logback-test.xml
similarity index 64%
copy from store/src/test/resources/logback-test.xml
copy to openmessaging/src/test/resources/rmq.logback-test.xml
index a033816..c3ec0d1 100644
--- a/store/src/test/resources/logback-test.xml
+++ b/openmessaging/src/test/resources/rmq.logback-test.xml
@@ -17,19 +17,20 @@
   -->
 <configuration>
 
-    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
-        <encoder>
-            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n</pattern>
-            <charset class="java.nio.charset.Charset">UTF-8</charset>
-        </encoder>
+    <appender name="CONSOLE" class="org.apache.rocketmq.shade.ch.qos.logback.core.ConsoleAppender">
+        <layout class="org.apache.rocketmq.shade.ch.qos.logback.classic.PatternLayout">
+            <Pattern>
+                %d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n
+            </Pattern>
+        </layout>
     </appender>
 
-    <logger name="org.apache.rocketmq.store" level="WARN" additivity="false">
-        <appender-ref ref="STDOUT"/>
+    <logger name="org.apache.rocketmq" level="error" additivity="false">
+        <appender-ref ref="CONSOLE"/>
     </logger>
 
-    <root level="OFF">
-        <appender-ref ref="STDOUT"/>
+    <root level="error">
+        <appender-ref ref="CONSOLE"/>
     </root>
 
-</configuration>
+</configuration>
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index cc6baa4..cfb7f40 100644
--- a/pom.xml
+++ b/pom.xml
@@ -101,8 +101,6 @@
         <maven.compiler.source>1.8</maven.compiler.source>
         <maven.compiler.target>1.8</maven.compiler.target>
 
-        <slf4j.version>1.7.7</slf4j.version>
-        <logback.version>1.2.10</logback.version>
         <commons-cli.version>1.5.0</commons-cli.version>
         <netty.version>4.1.65.Final</netty.version>
         <bcpkix-jdk15on.version>1.69</bcpkix-jdk15on.version>
@@ -112,11 +110,11 @@
         <commons-lang3.version>3.12.0</commons-lang3.version>
         <commons-io.version>2.7</commons-io.version>
         <guava.version>31.0.1-jre</guava.version>
+        <gson.version>2.9.0</gson.version>
         <openmessaging.version>0.3.1-alpha</openmessaging.version>
-        <log4j.version>1.2.17</log4j.version>
         <snakeyaml.version>1.32</snakeyaml.version>
         <commons-codec.version>1.13</commons-codec.version>
-        <logging-log4j.version>2.17.1</logging-log4j.version>
+        <rocketmq-logging.version>1.0.3</rocketmq-logging.version>
         <commons-validator.version>1.7</commons-validator.version>
         <zstd-jni.version>1.5.2-2</zstd-jni.version>
         <lz4-java.version>1.8.0</lz4-java.version>
@@ -143,6 +141,7 @@
         <mockito-core.version>3.10.0</mockito-core.version>
         <awaitility.version>4.1.0</awaitility.version>
         <truth.version>0.30</truth.version>
+        <slf4j-api.version>1.7.33</slf4j-api.version>
 
         <!-- Build plugin dependencies -->
         <versions-maven-plugin.version>2.2</versions-maven-plugin.version>
@@ -183,7 +182,6 @@
         <module>test</module>
         <module>distribution</module>
         <module>openmessaging</module>
-        <module>logging</module>
         <module>acl</module>
         <module>example</module>
         <module>container</module>
@@ -520,11 +518,6 @@
         <dependencies>
             <dependency>
                 <groupId>${project.groupId}</groupId>
-                <artifactId>rocketmq-controller</artifactId>
-                <version>${project.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>${project.groupId}</groupId>
                 <artifactId>rocketmq-proto</artifactId>
                 <version>${rocketmq-proto.version}</version>
                 <exclusions>
@@ -543,96 +536,6 @@
                 </exclusions>
             </dependency>
             <dependency>
-                <groupId>${project.groupId}</groupId>
-                <artifactId>rocketmq-client</artifactId>
-                <version>${project.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>${project.groupId}</groupId>
-                <artifactId>rocketmq-broker</artifactId>
-                <version>${project.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>${project.groupId}</groupId>
-                <artifactId>rocketmq-container</artifactId>
-                <version>${project.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>${project.groupId}</groupId>
-                <artifactId>rocketmq-common</artifactId>
-                <version>${project.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>${project.groupId}</groupId>
-                <artifactId>rocketmq-store</artifactId>
-                <version>${project.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>${project.groupId}</groupId>
-                <artifactId>rocketmq-namesrv</artifactId>
-                <version>${project.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>${project.groupId}</groupId>
-                <artifactId>rocketmq-tools</artifactId>
-                <version>${project.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>${project.groupId}</groupId>
-                <artifactId>rocketmq-remoting</artifactId>
-                <version>${project.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>${project.groupId}</groupId>
-                <artifactId>rocketmq-logging</artifactId>
-                <version>${project.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>${project.groupId}</groupId>
-                <artifactId>rocketmq-test</artifactId>
-                <version>${project.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>${project.groupId}</groupId>
-                <artifactId>rocketmq-srvutil</artifactId>
-                <version>${project.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.apache.rocketmq</groupId>
-                <artifactId>rocketmq-filter</artifactId>
-                <version>${project.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>${project.groupId}</groupId>
-                <artifactId>rocketmq-acl</artifactId>
-                <version>${project.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>${project.groupId}</groupId>
-                <artifactId>rocketmq-openmessaging</artifactId>
-                <version>${project.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>${project.groupId}</groupId>
-                <artifactId>rocketmq-example</artifactId>
-                <version>${project.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>${project.groupId}</groupId>
-                <artifactId>rocketmq-proxy</artifactId>
-                <version>${project.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.slf4j</groupId>
-                <artifactId>slf4j-api</artifactId>
-                <version>${slf4j.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>ch.qos.logback</groupId>
-                <artifactId>logback-classic</artifactId>
-                <version>${logback.version}</version>
-            </dependency>
-            <dependency>
                 <groupId>commons-cli</groupId>
                 <artifactId>commons-cli</artifactId>
                 <version>${commons-cli.version}</version>
@@ -686,6 +589,11 @@
                 </exclusions>
             </dependency>
             <dependency>
+                <groupId>com.google.code</groupId>
+                <artifactId>gson</artifactId>
+                <version>${gson.version}</version>
+            </dependency>
+            <dependency>
                 <groupId>com.googlecode.concurrentlinkedhashmap</groupId>
                 <artifactId>concurrentlinkedhashmap-lru</artifactId>
                 <version>${concurrentlinkedhashmap-lru.version}</version>
@@ -696,11 +604,6 @@
                 <version>${openmessaging.version}</version>
             </dependency>
             <dependency>
-                <groupId>log4j</groupId>
-                <artifactId>log4j</artifactId>
-                <version>${log4j.version}</version>
-            </dependency>
-            <dependency>
                 <groupId>org.yaml</groupId>
                 <artifactId>snakeyaml</artifactId>
                 <version>${snakeyaml.version}</version>
@@ -711,14 +614,14 @@
                 <version>${commons-codec.version}</version>
             </dependency>
             <dependency>
-                <groupId>org.apache.logging.log4j</groupId>
-                <artifactId>log4j-core</artifactId>
-                <version>${logging-log4j.version}</version>
+                <groupId>io.github.aliyun-mq</groupId>
+                <artifactId>rocketmq-slf4j-api</artifactId>
+                <version>${rocketmq-logging.version}</version>
             </dependency>
             <dependency>
-                <groupId>org.apache.logging.log4j</groupId>
-                <artifactId>log4j-slf4j-impl</artifactId>
-                <version>${logging-log4j.version}</version>
+                <groupId>io.github.aliyun-mq</groupId>
+                <artifactId>rocketmq-logback-classic</artifactId>
+                <version>${rocketmq-logging.version}</version>
             </dependency>
             <dependency>
                 <groupId>commons-validator</groupId>
@@ -784,6 +687,12 @@
                 <groupId>io.openmessaging.storage</groupId>
                 <artifactId>dledger</artifactId>
                 <version>${dleger.version}</version>
+                <exclusions>
+                    <exclusion>
+                        <groupId>org.slf4j</groupId>
+                        <artifactId>slf4j-api</artifactId>
+                    </exclusion>
+                </exclusions>
             </dependency>
             <dependency>
                 <groupId>org.apache.tomcat</groupId>
@@ -881,6 +790,12 @@
                 <groupId>com.conversantmedia</groupId>
                 <artifactId>disruptor</artifactId>
                 <version>${disruptor.version}</version>
+                <exclusions>
+                    <exclusion>
+                        <groupId>org.slf4j</groupId>
+                        <artifactId>slf4j-api</artifactId>
+                    </exclusion>
+                </exclusions>
             </dependency>
             <dependency>
                 <groupId>com.github.ben-manes.caffeine</groupId>
@@ -902,6 +817,13 @@
             </dependency>
 
             <dependency>
+                <groupId>org.slf4j</groupId>
+                <artifactId>slf4j-api</artifactId>
+                <version>${slf4j-api.version}</version>
+                <scope>test</scope>
+            </dependency>
+
+            <dependency>
                 <groupId>com.squareup.okio</groupId>
                 <artifactId>okio-jvm</artifactId>
                 <version>${okio-jvm.version}</version>
diff --git a/proxy/BUILD.bazel b/proxy/BUILD.bazel
index 929b8c0..a407723 100644
--- a/proxy/BUILD.bazel
+++ b/proxy/BUILD.bazel
@@ -25,7 +25,6 @@
         "//broker",
         "//client",
         "//common",
-        "//logging",
         "//remoting",
         "//srvutil",
         "@maven//:ch_qos_logback_logback_classic",
@@ -59,6 +58,7 @@
         "@maven//:org_checkerframework_checker_qual",
         "@maven//:org_lz4_lz4_java",
         "@maven//:org_slf4j_slf4j_api",
+        "@maven//:io_github_aliyun_mq_rocketmq_slf4j_api",
     ],
 )
 
@@ -104,7 +104,7 @@
 GenTestRules(
     name = "GeneratedTestRules",
     exclude_tests = [
-        "src/test/java/org/apache/rocketmq/proxy/config/InitConfigAndLoggerTest",
+        "src/test/java/org/apache/rocketmq/proxy/config/InitConfigTest",
     ],
     test_files = glob(["src/test/java/**/*Test.java"]),
     deps = [
diff --git a/proxy/pom.xml b/proxy/pom.xml
index 3390a56..d5d8e92 100644
--- a/proxy/pom.xml
+++ b/proxy/pom.xml
@@ -16,7 +16,9 @@
   ~ limitations under the License.
   -->
 
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <parent>
         <artifactId>rocketmq-all</artifactId>
         <groupId>org.apache.rocketmq</groupId>
@@ -42,14 +44,17 @@
         <dependency>
             <groupId>org.apache.rocketmq</groupId>
             <artifactId>rocketmq-broker</artifactId>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.rocketmq</groupId>
             <artifactId>rocketmq-common</artifactId>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.rocketmq</groupId>
             <artifactId>rocketmq-client</artifactId>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>io.grpc</groupId>
@@ -76,12 +81,12 @@
             <artifactId>commons-lang3</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-api</artifactId>
+            <groupId>io.github.aliyun-mq</groupId>
+            <artifactId>rocketmq-slf4j-api</artifactId>
         </dependency>
         <dependency>
-            <groupId>ch.qos.logback</groupId>
-            <artifactId>logback-classic</artifactId>
+            <groupId>io.github.aliyun-mq</groupId>
+            <artifactId>rocketmq-logback-classic</artifactId>
         </dependency>
         <dependency>
             <groupId>com.github.ben-manes.caffeine</groupId>
diff --git a/proxy/src/main/java/org/apache/rocketmq/proxy/ProxyStartup.java b/proxy/src/main/java/org/apache/rocketmq/proxy/ProxyStartup.java
index 8c96cdc..b135cf3 100644
--- a/proxy/src/main/java/org/apache/rocketmq/proxy/ProxyStartup.java
+++ b/proxy/src/main/java/org/apache/rocketmq/proxy/ProxyStartup.java
@@ -17,9 +17,6 @@
 
 package org.apache.rocketmq.proxy;
 
-import ch.qos.logback.classic.LoggerContext;
-import ch.qos.logback.classic.joran.JoranConfigurator;
-import ch.qos.logback.core.joran.spi.JoranException;
 import com.google.common.collect.Lists;
 import io.grpc.protobuf.services.ChannelzService;
 import io.grpc.protobuf.services.ProtoReflectionService;
@@ -34,12 +31,11 @@
 import org.apache.commons.lang3.StringUtils;
 import org.apache.rocketmq.broker.BrokerController;
 import org.apache.rocketmq.broker.BrokerStartup;
-import org.apache.rocketmq.client.log.ClientLogger;
 import org.apache.rocketmq.common.MixAll;
 import org.apache.rocketmq.common.constant.LoggerName;
 import org.apache.rocketmq.common.thread.ThreadPoolMonitor;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.proxy.common.AbstractStartAndShutdown;
 import org.apache.rocketmq.proxy.common.StartAndShutdown;
 import org.apache.rocketmq.proxy.config.Configuration;
@@ -53,10 +49,9 @@
 import org.apache.rocketmq.proxy.processor.MessagingProcessor;
 import org.apache.rocketmq.remoting.protocol.RemotingCommand;
 import org.apache.rocketmq.srvutil.ServerUtil;
-import org.slf4j.LoggerFactory;
 
 public class ProxyStartup {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.PROXY_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.PROXY_LOGGER_NAME);
     private static final ProxyStartAndShutdown PROXY_START_AND_SHUTDOWN = new ProxyStartAndShutdown();
 
     private static class ProxyStartAndShutdown extends AbstractStartAndShutdown {
@@ -70,7 +65,7 @@
         try {
             // parse argument from command line
             CommandLineArgument commandLineArgument = parseCommandLineArgument(args);
-            initLogAndConfiguration(commandLineArgument);
+            initConfiguration(commandLineArgument);
 
             // init thread pool monitor for proxy.
             initThreadPoolMonitor();
@@ -111,12 +106,11 @@
         log.info(new Date() + " rocketmq-proxy startup successfully");
     }
 
-    protected static void initLogAndConfiguration(CommandLineArgument commandLineArgument) throws Exception {
+    protected static void initConfiguration(CommandLineArgument commandLineArgument) throws Exception {
         if (StringUtils.isNotBlank(commandLineArgument.getProxyConfigPath())) {
             System.setProperty(Configuration.CONFIG_PATH_PROPERTY, commandLineArgument.getProxyConfigPath());
         }
         ConfigurationManager.initEnv();
-        initLogger();
         ConfigurationManager.intConfig();
         setConfigFromCommandLineArgument(commandLineArgument);
     }
@@ -235,29 +229,10 @@
     public static void initThreadPoolMonitor() {
         ProxyConfig config = ConfigurationManager.getProxyConfig();
         ThreadPoolMonitor.config(
-            InternalLoggerFactory.getLogger(LoggerName.PROXY_LOGGER_NAME),
-            InternalLoggerFactory.getLogger(LoggerName.PROXY_WATER_MARK_LOGGER_NAME),
+            LoggerFactory.getLogger(LoggerName.PROXY_LOGGER_NAME),
+            LoggerFactory.getLogger(LoggerName.PROXY_WATER_MARK_LOGGER_NAME),
             config.isEnablePrintJstack(), config.getPrintJstackInMillis(),
             config.getPrintThreadPoolStatusInMillis());
         ThreadPoolMonitor.init();
     }
-
-    public static void initLogger() throws JoranException {
-        System.setProperty("brokerLogDir", "");
-        System.setProperty(ClientLogger.CLIENT_LOG_USESLF4J, "true");
-
-        LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
-        JoranConfigurator configurator = new JoranConfigurator();
-        configurator.setContext(lc);
-        lc.reset();
-        //https://logback.qos.ch/manual/configuration.html
-        lc.setPackagingDataEnabled(false);
-        final String home = ConfigurationManager.getProxyHome();
-        if (StringUtils.isEmpty(home)) {
-            System.out.printf("Please set the %s variable or %s variable in your environment to match the location of the RocketMQ installation%n",
-                MixAll.ROCKETMQ_HOME_ENV, ConfigurationManager.RMQ_PROXY_HOME);
-            System.exit(-1);
-        }
-        configurator.doConfigure(home + "/conf/logback_proxy.xml");
-    }
 }
diff --git a/proxy/src/main/java/org/apache/rocketmq/proxy/config/Configuration.java b/proxy/src/main/java/org/apache/rocketmq/proxy/config/Configuration.java
index 9c1ff81..327d5f4 100644
--- a/proxy/src/main/java/org/apache/rocketmq/proxy/config/Configuration.java
+++ b/proxy/src/main/java/org/apache/rocketmq/proxy/config/Configuration.java
@@ -28,8 +28,8 @@
 import java.util.concurrent.atomic.AtomicReference;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 public class Configuration {
     private final static Logger log = LoggerFactory.getLogger(LoggerName.PROXY_LOGGER_NAME);
diff --git a/proxy/src/main/java/org/apache/rocketmq/proxy/config/ProxyConfig.java b/proxy/src/main/java/org/apache/rocketmq/proxy/config/ProxyConfig.java
index 383f819..308ac34 100644
--- a/proxy/src/main/java/org/apache/rocketmq/proxy/config/ProxyConfig.java
+++ b/proxy/src/main/java/org/apache/rocketmq/proxy/config/ProxyConfig.java
@@ -32,8 +32,8 @@
 import org.apache.rocketmq.common.MixAll;
 import org.apache.rocketmq.common.constant.LoggerName;
 import org.apache.rocketmq.proxy.ProxyMode;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 public class ProxyConfig implements ConfigFile {
     private final static Logger log = LoggerFactory.getLogger(LoggerName.PROXY_LOGGER_NAME);
diff --git a/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/GrpcServer.java b/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/GrpcServer.java
index d663a88..09028be 100644
--- a/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/GrpcServer.java
+++ b/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/GrpcServer.java
@@ -19,12 +19,12 @@
 
 import java.util.concurrent.TimeUnit;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.proxy.common.StartAndShutdown;
 
 public class GrpcServer implements StartAndShutdown {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.PROXY_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.PROXY_LOGGER_NAME);
 
     private final io.grpc.Server server;
 
diff --git a/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/GrpcServerBuilder.java b/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/GrpcServerBuilder.java
index bb3b2b6..c4e637d 100644
--- a/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/GrpcServerBuilder.java
+++ b/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/GrpcServerBuilder.java
@@ -40,8 +40,8 @@
 import org.apache.rocketmq.acl.AccessValidator;
 import org.apache.rocketmq.common.constant.LoggerName;
 import org.apache.rocketmq.common.utils.ServiceProvider;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.proxy.config.ConfigurationManager;
 import org.apache.rocketmq.proxy.config.ProxyConfig;
 import org.apache.rocketmq.proxy.grpc.interceptor.AuthenticationInterceptor;
@@ -50,7 +50,7 @@
 import org.apache.rocketmq.proxy.grpc.interceptor.HeaderInterceptor;
 
 public class GrpcServerBuilder {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.PROXY_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.PROXY_LOGGER_NAME);
     protected NettyServerBuilder serverBuilder;
 
     public static GrpcServerBuilder newBuilder(ThreadPoolExecutor executor, int port) {
diff --git a/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/interceptor/GlobalExceptionInterceptor.java b/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/interceptor/GlobalExceptionInterceptor.java
index 0c34b15..c884c99 100644
--- a/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/interceptor/GlobalExceptionInterceptor.java
+++ b/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/interceptor/GlobalExceptionInterceptor.java
@@ -26,11 +26,11 @@
 import io.grpc.Status;
 import io.grpc.StatusRuntimeException;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 public class GlobalExceptionInterceptor implements ServerInterceptor {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.PROXY_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.PROXY_LOGGER_NAME);
 
     @Override
     public <R, W> ServerCall.Listener<R> interceptCall(
diff --git a/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/v2/AbstractMessingActivity.java b/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/v2/AbstractMessingActivity.java
index 13b8557..3d79d0e 100644
--- a/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/v2/AbstractMessingActivity.java
+++ b/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/v2/AbstractMessingActivity.java
@@ -18,15 +18,15 @@
 
 import apache.rocketmq.v2.Resource;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.proxy.grpc.v2.channel.GrpcChannelManager;
 import org.apache.rocketmq.proxy.grpc.v2.common.GrpcClientSettingsManager;
 import org.apache.rocketmq.proxy.grpc.v2.common.GrpcValidator;
 import org.apache.rocketmq.proxy.processor.MessagingProcessor;
 
 public abstract class AbstractMessingActivity {
-    protected static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.PROXY_LOGGER_NAME);
+    protected static final Logger log = LoggerFactory.getLogger(LoggerName.PROXY_LOGGER_NAME);
     protected final MessagingProcessor messagingProcessor;
     protected final GrpcClientSettingsManager grpcClientSettingsManager;
     protected final GrpcChannelManager grpcChannelManager;
diff --git a/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/v2/DefaultGrpcMessingActivity.java b/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/v2/DefaultGrpcMessingActivity.java
index 32ddefd..edfb1c5 100644
--- a/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/v2/DefaultGrpcMessingActivity.java
+++ b/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/v2/DefaultGrpcMessingActivity.java
@@ -40,8 +40,8 @@
 import io.grpc.stub.StreamObserver;
 import java.util.concurrent.CompletableFuture;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.proxy.common.AbstractStartAndShutdown;
 import org.apache.rocketmq.proxy.common.ProxyContext;
 import org.apache.rocketmq.proxy.grpc.v2.channel.GrpcChannelManager;
@@ -58,7 +58,7 @@
 import org.apache.rocketmq.proxy.processor.ReceiptHandleProcessor;
 
 public class DefaultGrpcMessingActivity extends AbstractStartAndShutdown implements GrpcMessingActivity {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.PROXY_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.PROXY_LOGGER_NAME);
 
     protected GrpcClientSettingsManager grpcClientSettingsManager;
     protected GrpcChannelManager grpcChannelManager;
diff --git a/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/v2/GrpcMessagingApplication.java b/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/v2/GrpcMessagingApplication.java
index 9c940de..5c3acb3 100644
--- a/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/v2/GrpcMessagingApplication.java
+++ b/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/v2/GrpcMessagingApplication.java
@@ -61,8 +61,8 @@
 import org.apache.rocketmq.proxy.grpc.v2.common.ResponseBuilder;
 import org.apache.rocketmq.proxy.grpc.v2.common.ResponseWriter;
 import org.apache.rocketmq.proxy.processor.MessagingProcessor;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 public class GrpcMessagingApplication extends MessagingServiceGrpc.MessagingServiceImplBase implements StartAndShutdown {
     private final static Logger log = LoggerFactory.getLogger(LoggerName.PROXY_LOGGER_NAME);
diff --git a/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/v2/channel/GrpcClientChannel.java b/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/v2/channel/GrpcClientChannel.java
index cc2e77e..8c43c49 100644
--- a/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/v2/channel/GrpcClientChannel.java
+++ b/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/v2/channel/GrpcClientChannel.java
@@ -30,8 +30,8 @@
 import java.util.concurrent.atomic.AtomicReference;
 import org.apache.rocketmq.common.constant.LoggerName;
 import org.apache.rocketmq.common.message.MessageExt;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.proxy.common.ProxyContext;
 import org.apache.rocketmq.proxy.grpc.v2.common.GrpcConverter;
 import org.apache.rocketmq.proxy.service.relay.ProxyChannel;
@@ -46,7 +46,7 @@
 import org.apache.rocketmq.remoting.protocol.header.GetConsumerRunningInfoRequestHeader;
 
 public class GrpcClientChannel extends ProxyChannel {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.PROXY_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.PROXY_LOGGER_NAME);
 
     private final GrpcChannelManager grpcChannelManager;
 
diff --git a/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/v2/client/ClientActivity.java b/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/v2/client/ClientActivity.java
index 9f04ccf..51fc764 100644
--- a/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/v2/client/ClientActivity.java
+++ b/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/v2/client/ClientActivity.java
@@ -46,8 +46,8 @@
 import org.apache.rocketmq.common.attribute.TopicMessageType;
 import org.apache.rocketmq.common.constant.LoggerName;
 import org.apache.rocketmq.common.consumer.ConsumeFromWhere;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.proxy.common.ProxyContext;
 import org.apache.rocketmq.proxy.grpc.v2.AbstractMessingActivity;
 import org.apache.rocketmq.proxy.grpc.v2.channel.GrpcChannelManager;
@@ -70,7 +70,7 @@
 
 public class ClientActivity extends AbstractMessingActivity {
 
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.PROXY_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.PROXY_LOGGER_NAME);
 
     public ClientActivity(MessagingProcessor messagingProcessor,
         GrpcClientSettingsManager grpcClientSettingsManager,
diff --git a/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/v2/common/GrpcConverter.java b/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/v2/common/GrpcConverter.java
index c818be7..8c9193b 100644
--- a/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/v2/common/GrpcConverter.java
+++ b/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/v2/common/GrpcConverter.java
@@ -43,12 +43,12 @@
 import org.apache.rocketmq.common.sysflag.MessageSysFlag;
 import org.apache.rocketmq.common.utils.BinaryUtil;
 import org.apache.rocketmq.common.utils.NetworkUtil;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.protocol.NamespaceUtil;
 
 public class GrpcConverter {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.PROXY_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.PROXY_LOGGER_NAME);
 
     protected static final Object INSTANCE_CREATE_LOCK = new Object();
     protected static volatile GrpcConverter instance;
diff --git a/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/v2/common/GrpcValidator.java b/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/v2/common/GrpcValidator.java
index 0ada96b..4c0662b 100644
--- a/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/v2/common/GrpcValidator.java
+++ b/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/v2/common/GrpcValidator.java
@@ -26,12 +26,12 @@
 import org.apache.rocketmq.common.MixAll;
 import org.apache.rocketmq.common.constant.LoggerName;
 import org.apache.rocketmq.common.topic.TopicValidator;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.proxy.config.ConfigurationManager;
 
 public class GrpcValidator {
-    protected static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.PROXY_LOGGER_NAME);
+    protected static final Logger log = LoggerFactory.getLogger(LoggerName.PROXY_LOGGER_NAME);
 
     protected static final Object INSTANCE_CREATE_LOCK = new Object();
     protected static volatile GrpcValidator instance;
diff --git a/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/v2/common/ResponseBuilder.java b/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/v2/common/ResponseBuilder.java
index c591086..2a2256a 100644
--- a/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/v2/common/ResponseBuilder.java
+++ b/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/v2/common/ResponseBuilder.java
@@ -25,8 +25,8 @@
 import org.apache.rocketmq.client.exception.MQBrokerException;
 import org.apache.rocketmq.client.exception.MQClientException;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.proxy.common.ProxyException;
 import org.apache.rocketmq.proxy.common.utils.ExceptionUtils;
 import org.apache.rocketmq.proxy.service.route.TopicRouteHelper;
@@ -35,7 +35,7 @@
 
 public class ResponseBuilder {
 
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.PROXY_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.PROXY_LOGGER_NAME);
     protected static final Map<Integer, Code> RESPONSE_CODE_MAPPING = new ConcurrentHashMap<>();
 
     protected static final Object INSTANCE_CREATE_LOCK = new Object();
diff --git a/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/v2/common/ResponseWriter.java b/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/v2/common/ResponseWriter.java
index 43ddf99..c284234 100644
--- a/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/v2/common/ResponseWriter.java
+++ b/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/v2/common/ResponseWriter.java
@@ -22,11 +22,11 @@
 import io.grpc.stub.ServerCallStreamObserver;
 import io.grpc.stub.StreamObserver;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 public class ResponseWriter {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.PROXY_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.PROXY_LOGGER_NAME);
 
     protected static final Object INSTANCE_CREATE_LOCK = new Object();
     protected static volatile ResponseWriter instance;
diff --git a/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/v2/consumer/ReceiveMessageResponseStreamWriter.java b/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/v2/consumer/ReceiveMessageResponseStreamWriter.java
index 7faf1b4..e88f8cf 100644
--- a/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/v2/consumer/ReceiveMessageResponseStreamWriter.java
+++ b/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/v2/consumer/ReceiveMessageResponseStreamWriter.java
@@ -31,8 +31,8 @@
 import org.apache.rocketmq.common.consumer.ReceiptHandle;
 import org.apache.rocketmq.common.message.MessageConst;
 import org.apache.rocketmq.common.message.MessageExt;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.proxy.common.ProxyContext;
 import org.apache.rocketmq.proxy.grpc.v2.common.GrpcConverter;
 import org.apache.rocketmq.proxy.grpc.v2.common.ResponseBuilder;
@@ -40,7 +40,7 @@
 import org.apache.rocketmq.proxy.processor.MessagingProcessor;
 
 public class ReceiveMessageResponseStreamWriter {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.PROXY_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.PROXY_LOGGER_NAME);
     protected static final long NACK_INVISIBLE_TIME = Duration.ofSeconds(1).toMillis();
 
     protected final MessagingProcessor messagingProcessor;
diff --git a/proxy/src/main/java/org/apache/rocketmq/proxy/metrics/ProxyMetricsManager.java b/proxy/src/main/java/org/apache/rocketmq/proxy/metrics/ProxyMetricsManager.java
index eac438d..31bb8bf 100644
--- a/proxy/src/main/java/org/apache/rocketmq/proxy/metrics/ProxyMetricsManager.java
+++ b/proxy/src/main/java/org/apache/rocketmq/proxy/metrics/ProxyMetricsManager.java
@@ -42,8 +42,8 @@
 import org.apache.rocketmq.common.constant.LoggerName;
 import org.apache.rocketmq.proxy.common.StartAndShutdown;
 import org.apache.rocketmq.proxy.config.ProxyConfig;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 import static org.apache.rocketmq.broker.metrics.BrokerMetricsConstant.AGGREGATION_DELTA;
 import static org.apache.rocketmq.broker.metrics.BrokerMetricsConstant.LABEL_AGGREGATION;
diff --git a/proxy/src/main/java/org/apache/rocketmq/proxy/processor/ConsumerProcessor.java b/proxy/src/main/java/org/apache/rocketmq/proxy/processor/ConsumerProcessor.java
index f37238f..19bc744 100644
--- a/proxy/src/main/java/org/apache/rocketmq/proxy/processor/ConsumerProcessor.java
+++ b/proxy/src/main/java/org/apache/rocketmq/proxy/processor/ConsumerProcessor.java
@@ -37,8 +37,8 @@
 import org.apache.rocketmq.common.message.MessageConst;
 import org.apache.rocketmq.common.message.MessageExt;
 import org.apache.rocketmq.common.message.MessageQueue;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.proxy.common.ProxyContext;
 import org.apache.rocketmq.proxy.common.ProxyException;
 import org.apache.rocketmq.proxy.common.ProxyExceptionCode;
@@ -59,7 +59,7 @@
 import org.apache.rocketmq.remoting.protocol.heartbeat.SubscriptionData;
 
 public class ConsumerProcessor extends AbstractProcessor {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.PROXY_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.PROXY_LOGGER_NAME);
 
     private final ExecutorService executor;
 
diff --git a/proxy/src/main/java/org/apache/rocketmq/proxy/processor/ProducerProcessor.java b/proxy/src/main/java/org/apache/rocketmq/proxy/processor/ProducerProcessor.java
index 3af8df8..6d3f674 100644
--- a/proxy/src/main/java/org/apache/rocketmq/proxy/processor/ProducerProcessor.java
+++ b/proxy/src/main/java/org/apache/rocketmq/proxy/processor/ProducerProcessor.java
@@ -33,8 +33,8 @@
 import org.apache.rocketmq.common.message.MessageId;
 import org.apache.rocketmq.common.sysflag.MessageSysFlag;
 import org.apache.rocketmq.common.topic.TopicValidator;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.proxy.common.ProxyContext;
 import org.apache.rocketmq.proxy.common.ProxyException;
 import org.apache.rocketmq.proxy.common.ProxyExceptionCode;
@@ -51,7 +51,7 @@
 import org.apache.rocketmq.remoting.protocol.header.SendMessageRequestHeader;
 
 public class ProducerProcessor extends AbstractProcessor {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.PROXY_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.PROXY_LOGGER_NAME);
     private final ExecutorService executor;
     private final TopicMessageTypeValidator topicMessageTypeValidator;
 
diff --git a/proxy/src/main/java/org/apache/rocketmq/proxy/processor/ReceiptHandleProcessor.java b/proxy/src/main/java/org/apache/rocketmq/proxy/processor/ReceiptHandleProcessor.java
index baedb7e..2557b23 100644
--- a/proxy/src/main/java/org/apache/rocketmq/proxy/processor/ReceiptHandleProcessor.java
+++ b/proxy/src/main/java/org/apache/rocketmq/proxy/processor/ReceiptHandleProcessor.java
@@ -52,8 +52,8 @@
 import org.apache.rocketmq.proxy.config.ProxyConfig;
 import org.apache.rocketmq.remoting.protocol.subscription.RetryPolicy;
 import org.apache.rocketmq.remoting.protocol.subscription.SubscriptionGroupConfig;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 public class ReceiptHandleProcessor extends AbstractStartAndShutdown {
     protected final static Logger log = LoggerFactory.getLogger(LoggerName.PROXY_LOGGER_NAME);
diff --git a/proxy/src/main/java/org/apache/rocketmq/proxy/service/ClusterServiceManager.java b/proxy/src/main/java/org/apache/rocketmq/proxy/service/ClusterServiceManager.java
index f0e0c98..53e9a75 100644
--- a/proxy/src/main/java/org/apache/rocketmq/proxy/service/ClusterServiceManager.java
+++ b/proxy/src/main/java/org/apache/rocketmq/proxy/service/ClusterServiceManager.java
@@ -27,8 +27,8 @@
 import org.apache.rocketmq.broker.client.ProducerGroupEvent;
 import org.apache.rocketmq.broker.client.ProducerManager;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.proxy.common.AbstractStartAndShutdown;
 import org.apache.rocketmq.proxy.config.ConfigurationManager;
 import org.apache.rocketmq.proxy.config.ProxyConfig;
@@ -48,7 +48,7 @@
 import org.apache.rocketmq.remoting.RPCHook;
 
 public class ClusterServiceManager extends AbstractStartAndShutdown implements ServiceManager {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.PROXY_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.PROXY_LOGGER_NAME);
 
     protected ClusterTransactionService clusterTransactionService;
     protected ProducerManager producerManager;
diff --git a/proxy/src/main/java/org/apache/rocketmq/proxy/service/channel/ChannelManager.java b/proxy/src/main/java/org/apache/rocketmq/proxy/service/channel/ChannelManager.java
index 283cd82..cad9851 100644
--- a/proxy/src/main/java/org/apache/rocketmq/proxy/service/channel/ChannelManager.java
+++ b/proxy/src/main/java/org/apache/rocketmq/proxy/service/channel/ChannelManager.java
@@ -25,8 +25,8 @@
 import org.apache.rocketmq.common.constant.LoggerName;
 import org.apache.rocketmq.common.utils.ConcurrentHashMapUtils;
 import org.apache.rocketmq.proxy.common.ProxyContext;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 public class ChannelManager {
     private static final Logger log = LoggerFactory.getLogger(LoggerName.PROXY_LOGGER_NAME);
diff --git a/proxy/src/main/java/org/apache/rocketmq/proxy/service/channel/SimpleChannel.java b/proxy/src/main/java/org/apache/rocketmq/proxy/service/channel/SimpleChannel.java
index 35e817b..e64c2d4 100644
--- a/proxy/src/main/java/org/apache/rocketmq/proxy/service/channel/SimpleChannel.java
+++ b/proxy/src/main/java/org/apache/rocketmq/proxy/service/channel/SimpleChannel.java
@@ -32,8 +32,8 @@
 import java.net.InetSocketAddress;
 import java.net.SocketAddress;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 /**
  * SimpleChannel is used to handle writeAndFlush situation in processor
@@ -42,7 +42,7 @@
  * @see io.netty.channel.Channel#writeAndFlush
  */
 public class SimpleChannel extends AbstractChannel {
-    protected static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.PROXY_LOGGER_NAME);
+    protected static final Logger log = LoggerFactory.getLogger(LoggerName.PROXY_LOGGER_NAME);
 
     protected final String remoteAddress;
     protected final String localAddress;
diff --git a/proxy/src/main/java/org/apache/rocketmq/proxy/service/message/LocalMessageService.java b/proxy/src/main/java/org/apache/rocketmq/proxy/service/message/LocalMessageService.java
index 24907ef..b746467 100644
--- a/proxy/src/main/java/org/apache/rocketmq/proxy/service/message/LocalMessageService.java
+++ b/proxy/src/main/java/org/apache/rocketmq/proxy/service/message/LocalMessageService.java
@@ -71,8 +71,8 @@
 import org.apache.rocketmq.remoting.protocol.header.SendMessageRequestHeader;
 import org.apache.rocketmq.remoting.protocol.header.SendMessageResponseHeader;
 import org.apache.rocketmq.remoting.protocol.header.UpdateConsumerOffsetRequestHeader;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 public class LocalMessageService implements MessageService {
     private static final Logger log = LoggerFactory.getLogger(LoggerName.PROXY_LOGGER_NAME);
diff --git a/proxy/src/main/java/org/apache/rocketmq/proxy/service/metadata/ClusterMetadataService.java b/proxy/src/main/java/org/apache/rocketmq/proxy/service/metadata/ClusterMetadataService.java
index 3290f82..f5f1588 100644
--- a/proxy/src/main/java/org/apache/rocketmq/proxy/service/metadata/ClusterMetadataService.java
+++ b/proxy/src/main/java/org/apache/rocketmq/proxy/service/metadata/ClusterMetadataService.java
@@ -25,8 +25,8 @@
 import org.apache.rocketmq.common.attribute.TopicMessageType;
 import org.apache.rocketmq.common.constant.LoggerName;
 import org.apache.rocketmq.common.thread.ThreadPoolMonitor;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.proxy.common.AbstractCacheLoader;
 import org.apache.rocketmq.proxy.common.AbstractStartAndShutdown;
 import org.apache.rocketmq.proxy.config.ConfigurationManager;
@@ -39,7 +39,7 @@
 import org.apache.rocketmq.remoting.protocol.subscription.SubscriptionGroupConfig;
 
 public class ClusterMetadataService extends AbstractStartAndShutdown implements MetadataService {
-    protected static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.PROXY_LOGGER_NAME);
+    protected static final Logger log = LoggerFactory.getLogger(LoggerName.PROXY_LOGGER_NAME);
     private static final long DEFAULT_TIMEOUT = 3000;
 
     private final TopicRouteService topicRouteService;
diff --git a/proxy/src/main/java/org/apache/rocketmq/proxy/service/mqclient/MQClientAPIExt.java b/proxy/src/main/java/org/apache/rocketmq/proxy/service/mqclient/MQClientAPIExt.java
index 4999310..2845d03 100644
--- a/proxy/src/main/java/org/apache/rocketmq/proxy/service/mqclient/MQClientAPIExt.java
+++ b/proxy/src/main/java/org/apache/rocketmq/proxy/service/mqclient/MQClientAPIExt.java
@@ -44,8 +44,8 @@
 import org.apache.rocketmq.common.message.MessageDecoder;
 import org.apache.rocketmq.common.message.MessageExt;
 import org.apache.rocketmq.common.message.MessageQueue;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.RPCHook;
 import org.apache.rocketmq.remoting.exception.RemotingCommandException;
 import org.apache.rocketmq.remoting.netty.NettyClientConfig;
@@ -77,7 +77,7 @@
 import org.apache.rocketmq.remoting.protocol.heartbeat.HeartbeatData;
 
 public class MQClientAPIExt extends MQClientAPIImpl {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.PROXY_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.PROXY_LOGGER_NAME);
 
     private final ClientConfig clientConfig;
 
diff --git a/proxy/src/main/java/org/apache/rocketmq/proxy/service/mqclient/ProxyClientRemotingProcessor.java b/proxy/src/main/java/org/apache/rocketmq/proxy/service/mqclient/ProxyClientRemotingProcessor.java
index 492ce04..600ad54 100644
--- a/proxy/src/main/java/org/apache/rocketmq/proxy/service/mqclient/ProxyClientRemotingProcessor.java
+++ b/proxy/src/main/java/org/apache/rocketmq/proxy/service/mqclient/ProxyClientRemotingProcessor.java
@@ -26,8 +26,8 @@
 import org.apache.rocketmq.common.message.MessageDecoder;
 import org.apache.rocketmq.common.message.MessageExt;
 import org.apache.rocketmq.common.utils.NetworkUtil;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.proxy.common.utils.ProxyUtils;
 import org.apache.rocketmq.remoting.exception.RemotingCommandException;
 import org.apache.rocketmq.remoting.protocol.RemotingCommand;
@@ -35,7 +35,7 @@
 import org.apache.rocketmq.remoting.protocol.header.CheckTransactionStateRequestHeader;
 
 public class ProxyClientRemotingProcessor extends ClientRemotingProcessor {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.PROXY_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.PROXY_LOGGER_NAME);
     private final ProducerManager producerManager;
 
     public ProxyClientRemotingProcessor(ProducerManager producerManager) {
diff --git a/proxy/src/main/java/org/apache/rocketmq/proxy/service/relay/ProxyChannel.java b/proxy/src/main/java/org/apache/rocketmq/proxy/service/relay/ProxyChannel.java
index 6e69b0a..440289d 100644
--- a/proxy/src/main/java/org/apache/rocketmq/proxy/service/relay/ProxyChannel.java
+++ b/proxy/src/main/java/org/apache/rocketmq/proxy/service/relay/ProxyChannel.java
@@ -34,8 +34,8 @@
 import org.apache.rocketmq.common.message.MessageDecoder;
 import org.apache.rocketmq.common.message.MessageExt;
 import org.apache.rocketmq.common.utils.NetworkUtil;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.proxy.common.ProxyContext;
 import org.apache.rocketmq.proxy.service.channel.SimpleChannel;
 import org.apache.rocketmq.proxy.service.transaction.TransactionData;
@@ -48,7 +48,7 @@
 import org.apache.rocketmq.remoting.protocol.header.GetConsumerRunningInfoRequestHeader;
 
 public abstract class ProxyChannel extends SimpleChannel {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.PROXY_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.PROXY_LOGGER_NAME);
     protected final SocketAddress remoteSocketAddress;
     protected final SocketAddress localSocketAddress;
 
diff --git a/proxy/src/main/java/org/apache/rocketmq/proxy/service/route/TopicRouteService.java b/proxy/src/main/java/org/apache/rocketmq/proxy/service/route/TopicRouteService.java
index 4a46f35..0850073 100644
--- a/proxy/src/main/java/org/apache/rocketmq/proxy/service/route/TopicRouteService.java
+++ b/proxy/src/main/java/org/apache/rocketmq/proxy/service/route/TopicRouteService.java
@@ -30,8 +30,8 @@
 import org.apache.rocketmq.common.constant.LoggerName;
 import org.apache.rocketmq.common.message.MessageQueue;
 import org.apache.rocketmq.common.thread.ThreadPoolMonitor;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.proxy.common.AbstractCacheLoader;
 import org.apache.rocketmq.proxy.common.AbstractStartAndShutdown;
 import org.apache.rocketmq.proxy.common.Address;
@@ -44,7 +44,7 @@
 import org.checkerframework.checker.nullness.qual.Nullable;
 
 public abstract class TopicRouteService extends AbstractStartAndShutdown {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.PROXY_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.PROXY_LOGGER_NAME);
 
     private final MQClientAPIFactory mqClientAPIFactory;
 
diff --git a/proxy/src/main/java/org/apache/rocketmq/proxy/service/transaction/ClusterTransactionService.java b/proxy/src/main/java/org/apache/rocketmq/proxy/service/transaction/ClusterTransactionService.java
index fed3122..5e76f27 100644
--- a/proxy/src/main/java/org/apache/rocketmq/proxy/service/transaction/ClusterTransactionService.java
+++ b/proxy/src/main/java/org/apache/rocketmq/proxy/service/transaction/ClusterTransactionService.java
@@ -34,8 +34,8 @@
 import org.apache.rocketmq.common.ServiceThread;
 import org.apache.rocketmq.common.constant.LoggerName;
 import org.apache.rocketmq.common.thread.ThreadPoolMonitor;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.proxy.config.ConfigurationManager;
 import org.apache.rocketmq.proxy.config.ProxyConfig;
 import org.apache.rocketmq.proxy.service.mqclient.MQClientAPIFactory;
@@ -47,7 +47,7 @@
 import org.apache.rocketmq.remoting.protocol.route.BrokerData;
 
 public class ClusterTransactionService extends AbstractTransactionService {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.PROXY_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.PROXY_LOGGER_NAME);
 
     private static final String TRANS_HEARTBEAT_CLIENT_ID = "rmq-proxy-producer-client";
 
diff --git a/proxy/src/main/java/org/apache/rocketmq/proxy/service/transaction/TransactionDataManager.java b/proxy/src/main/java/org/apache/rocketmq/proxy/service/transaction/TransactionDataManager.java
index 2c19b85..9cd9abb 100644
--- a/proxy/src/main/java/org/apache/rocketmq/proxy/service/transaction/TransactionDataManager.java
+++ b/proxy/src/main/java/org/apache/rocketmq/proxy/service/transaction/TransactionDataManager.java
@@ -29,13 +29,13 @@
 import java.util.concurrent.atomic.AtomicReference;
 import org.apache.rocketmq.common.ServiceThread;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.proxy.common.StartAndShutdown;
 import org.apache.rocketmq.proxy.config.ConfigurationManager;
 
 public class TransactionDataManager implements StartAndShutdown {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.PROXY_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.PROXY_LOGGER_NAME);
 
     protected final AtomicLong maxTransactionDataExpireTime = new AtomicLong(System.currentTimeMillis());
     protected final Map<String /* producerGroup@transactionId */, NavigableSet<TransactionData>> transactionIdDataMap = new ConcurrentHashMap<>();
diff --git a/distribution/conf/logback_proxy.xml b/proxy/src/main/resources/rmq.proxy.logback.xml
similarity index 68%
rename from distribution/conf/logback_proxy.xml
rename to proxy/src/main/resources/rmq.proxy.logback.xml
index a0101dc..cd9d9dd 100644
--- a/distribution/conf/logback_proxy.xml
+++ b/proxy/src/main/resources/rmq.proxy.logback.xml
@@ -19,15 +19,15 @@
 <configuration>
 
     <appender name="RocketmqProxyAppender_inner"
-              class="ch.qos.logback.core.rolling.RollingFileAppender">
+              class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.RollingFileAppender">
         <file>${user.home}/logs/rocketmqlogs/proxy.log</file>
         <append>true</append>
-        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+        <rollingPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
             <fileNamePattern>${user.home}/logs/rocketmqlogs/otherdays/proxy.%i.log.gz</fileNamePattern>
             <minIndex>1</minIndex>
             <maxIndex>10</maxIndex>
         </rollingPolicy>
-        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+        <triggeringPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
             <maxFileSize>128MB</maxFileSize>
         </triggeringPolicy>
         <encoder>
@@ -35,20 +35,20 @@
             <charset class="java.nio.charset.Charset">UTF-8</charset>
         </encoder>
     </appender>
-    <appender name="RocketmqProxyAppender" class="ch.qos.logback.classic.AsyncAppender">
+    <appender name="RocketmqProxyAppender" class="org.apache.rocketmq.shade.ch.qos.logback.classic.AsyncAppender">
         <appender-ref ref="RocketmqProxyAppender_inner"/>
     </appender>
 
     <appender name="RocketmqProxyWatermarkAppender_inner"
-              class="ch.qos.logback.core.rolling.RollingFileAppender">
+              class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.RollingFileAppender">
         <file>${user.home}/logs/rocketmqlogs/proxy_watermark.log</file>
         <append>true</append>
-        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+        <rollingPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
             <fileNamePattern>${user.home}/logs/rocketmqlogs/otherdays/proxy_watermark.%i.log.gz</fileNamePattern>
             <minIndex>1</minIndex>
             <maxIndex>10</maxIndex>
         </rollingPolicy>
-        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+        <triggeringPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
             <maxFileSize>128MB</maxFileSize>
         </triggeringPolicy>
         <encoder>
@@ -56,21 +56,21 @@
             <charset class="java.nio.charset.Charset">UTF-8</charset>
         </encoder>
     </appender>
-    <appender name="RocketmqProxyWatermarkAppender" class="ch.qos.logback.classic.AsyncAppender">
+    <appender name="RocketmqProxyWatermarkAppender" class="org.apache.rocketmq.shade.ch.qos.logback.classic.AsyncAppender">
         <appender-ref ref="RocketmqProxyWatermarkAppender_inner"/>
     </appender>
 
     <!-- Below is the logger configuration for broker-->
     <appender name="DefaultAppender"
-              class="ch.qos.logback.core.rolling.RollingFileAppender">
+              class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.RollingFileAppender">
         <file>${user.home}/logs/rocketmqlogs/${brokerLogDir}/broker_default.log</file>
         <append>true</append>
-        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+        <rollingPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
             <fileNamePattern>${user.home}/logs/rocketmqlogs/otherdays/${brokerLogDir}/broker_default.%i.log.gz</fileNamePattern>
             <minIndex>1</minIndex>
             <maxIndex>10</maxIndex>
         </rollingPolicy>
-        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+        <triggeringPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
             <maxFileSize>100MB</maxFileSize>
         </triggeringPolicy>
         <encoder>
@@ -80,15 +80,15 @@
     </appender>
 
     <appender name="RocketmqBrokerAppender_inner"
-              class="ch.qos.logback.core.rolling.RollingFileAppender">
+              class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.RollingFileAppender">
         <file>${user.home}/logs/rocketmqlogs/${brokerLogDir}/broker.log</file>
         <append>true</append>
-        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+        <rollingPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
             <fileNamePattern>${user.home}/logs/rocketmqlogs/otherdays/${brokerLogDir}/broker.%i.log.gz</fileNamePattern>
             <minIndex>1</minIndex>
             <maxIndex>20</maxIndex>
         </rollingPolicy>
-        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+        <triggeringPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
             <maxFileSize>128MB</maxFileSize>
         </triggeringPolicy>
         <encoder>
@@ -96,20 +96,20 @@
             <charset class="java.nio.charset.Charset">UTF-8</charset>
         </encoder>
     </appender>
-    <appender name="RocketmqBrokerAppender" class="ch.qos.logback.classic.AsyncAppender">
+    <appender name="RocketmqBrokerAppender" class="org.apache.rocketmq.shade.ch.qos.logback.classic.AsyncAppender">
         <appender-ref ref="RocketmqBrokerAppender_inner"/>
     </appender>
 
     <appender name="RocketmqProtectionAppender_inner"
-              class="ch.qos.logback.core.rolling.RollingFileAppender">
+              class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.RollingFileAppender">
         <file>${user.home}/logs/rocketmqlogs/${brokerLogDir}/protection.log</file>
         <append>true</append>
-        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+        <rollingPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
             <fileNamePattern>${user.home}/logs/rocketmqlogs/otherdays/${brokerLogDir}/protection.%i.log.gz</fileNamePattern>
             <minIndex>1</minIndex>
             <maxIndex>10</maxIndex>
         </rollingPolicy>
-        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+        <triggeringPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
             <maxFileSize>100MB</maxFileSize>
         </triggeringPolicy>
         <encoder>
@@ -117,20 +117,20 @@
             <charset class="java.nio.charset.Charset">UTF-8</charset>
         </encoder>
     </appender>
-    <appender name="RocketmqProtectionAppender" class="ch.qos.logback.classic.AsyncAppender">
+    <appender name="RocketmqProtectionAppender" class="org.apache.rocketmq.shade.ch.qos.logback.classic.AsyncAppender">
         <appender-ref ref="RocketmqProtectionAppender_inner"/>
     </appender>
 
     <appender name="RocketmqWaterMarkAppender_inner"
-              class="ch.qos.logback.core.rolling.RollingFileAppender">
+              class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.RollingFileAppender">
         <file>${user.home}/logs/rocketmqlogs/${brokerLogDir}/watermark.log</file>
         <append>true</append>
-        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+        <rollingPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
             <fileNamePattern>${user.home}/logs/rocketmqlogs/otherdays/${brokerLogDir}/watermark.%i.log.gz</fileNamePattern>
             <minIndex>1</minIndex>
             <maxIndex>10</maxIndex>
         </rollingPolicy>
-        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+        <triggeringPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
             <maxFileSize>100MB</maxFileSize>
         </triggeringPolicy>
         <encoder>
@@ -138,20 +138,20 @@
             <charset class="java.nio.charset.Charset">UTF-8</charset>
         </encoder>
     </appender>
-    <appender name="RocketmqWaterMarkAppender" class="ch.qos.logback.classic.AsyncAppender">
+    <appender name="RocketmqWaterMarkAppender" class="org.apache.rocketmq.shade.ch.qos.logback.classic.AsyncAppender">
         <appender-ref ref="RocketmqWaterMarkAppender_inner"/>
     </appender>
 
     <appender name="RocketmqStoreAppender_inner"
-              class="ch.qos.logback.core.rolling.RollingFileAppender">
+              class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.RollingFileAppender">
         <file>${user.home}/logs/rocketmqlogs/${brokerLogDir}/store.log</file>
         <append>true</append>
-        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+        <rollingPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
             <fileNamePattern>${user.home}/logs/rocketmqlogs/otherdays/${brokerLogDir}/store.%i.log.gz</fileNamePattern>
             <minIndex>1</minIndex>
             <maxIndex>10</maxIndex>
         </rollingPolicy>
-        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+        <triggeringPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
             <maxFileSize>128MB</maxFileSize>
         </triggeringPolicy>
         <encoder>
@@ -159,20 +159,20 @@
             <charset class="java.nio.charset.Charset">UTF-8</charset>
         </encoder>
     </appender>
-    <appender name="RocketmqStoreAppender" class="ch.qos.logback.classic.AsyncAppender">
+    <appender name="RocketmqStoreAppender" class="org.apache.rocketmq.shade.ch.qos.logback.classic.AsyncAppender">
         <appender-ref ref="RocketmqStoreAppender_inner"/>
     </appender>
 
     <appender name="RocketmqRemotingAppender_inner"
-              class="ch.qos.logback.core.rolling.RollingFileAppender">
+              class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.RollingFileAppender">
         <file>${user.home}/logs/rocketmqlogs/${brokerLogDir}/remoting.log</file>
         <append>true</append>
-        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+        <rollingPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
             <fileNamePattern>${user.home}/logs/rocketmqlogs/otherdays/${brokerLogDir}/remoting.%i.log.gz</fileNamePattern>
             <minIndex>1</minIndex>
             <maxIndex>10</maxIndex>
         </rollingPolicy>
-        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+        <triggeringPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
             <maxFileSize>100MB</maxFileSize>
         </triggeringPolicy>
         <encoder>
@@ -180,20 +180,20 @@
             <charset class="java.nio.charset.Charset">UTF-8</charset>
         </encoder>
     </appender>
-    <appender name="RocketmqRemotingAppender" class="ch.qos.logback.classic.AsyncAppender">
+    <appender name="RocketmqRemotingAppender" class="org.apache.rocketmq.shade.ch.qos.logback.classic.AsyncAppender">
         <appender-ref ref="RocketmqRemotingAppender_inner"/>
     </appender>
 
     <appender name="RocketmqStoreErrorAppender_inner"
-              class="ch.qos.logback.core.rolling.RollingFileAppender">
+              class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.RollingFileAppender">
         <file>${user.home}/logs/rocketmqlogs/${brokerLogDir}/storeerror.log</file>
         <append>true</append>
-        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+        <rollingPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
             <fileNamePattern>${user.home}/logs/rocketmqlogs/otherdays/${brokerLogDir}/storeerror.%i.log.gz</fileNamePattern>
             <minIndex>1</minIndex>
             <maxIndex>10</maxIndex>
         </rollingPolicy>
-        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+        <triggeringPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
             <maxFileSize>100MB</maxFileSize>
         </triggeringPolicy>
         <encoder>
@@ -201,21 +201,21 @@
             <charset class="java.nio.charset.Charset">UTF-8</charset>
         </encoder>
     </appender>
-    <appender name="RocketmqStoreErrorAppender" class="ch.qos.logback.classic.AsyncAppender">
+    <appender name="RocketmqStoreErrorAppender" class="org.apache.rocketmq.shade.ch.qos.logback.classic.AsyncAppender">
         <appender-ref ref="RocketmqStoreErrorAppender_inner"/>
     </appender>
 
 
     <appender name="RocketmqTransactionAppender_inner"
-              class="ch.qos.logback.core.rolling.RollingFileAppender">
+              class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.RollingFileAppender">
         <file>${user.home}/logs/rocketmqlogs/${brokerLogDir}/transaction.log</file>
         <append>true</append>
-        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+        <rollingPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
             <fileNamePattern>${user.home}/logs/rocketmqlogs/otherdays/${brokerLogDir}/transaction.%i.log.gz</fileNamePattern>
             <minIndex>1</minIndex>
             <maxIndex>10</maxIndex>
         </rollingPolicy>
-        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+        <triggeringPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
             <maxFileSize>100MB</maxFileSize>
         </triggeringPolicy>
         <encoder>
@@ -223,20 +223,20 @@
             <charset class="java.nio.charset.Charset">UTF-8</charset>
         </encoder>
     </appender>
-    <appender name="RocketmqTransactionAppender" class="ch.qos.logback.classic.AsyncAppender">
+    <appender name="RocketmqTransactionAppender" class="org.apache.rocketmq.shade.ch.qos.logback.classic.AsyncAppender">
         <appender-ref ref="RocketmqTransactionAppender_inner"/>
     </appender>
 
     <appender name="RocketmqRebalanceLockAppender_inner"
-              class="ch.qos.logback.core.rolling.RollingFileAppender">
+              class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.RollingFileAppender">
         <file>${user.home}/logs/rocketmqlogs/${brokerLogDir}/lock.log</file>
         <append>true</append>
-        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+        <rollingPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
             <fileNamePattern>${user.home}/logs/rocketmqlogs/otherdays/${brokerLogDir}/lock.%i.log.gz</fileNamePattern>
             <minIndex>1</minIndex>
             <maxIndex>5</maxIndex>
         </rollingPolicy>
-        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+        <triggeringPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
             <maxFileSize>100MB</maxFileSize>
         </triggeringPolicy>
         <encoder>
@@ -244,20 +244,20 @@
             <charset class="java.nio.charset.Charset">UTF-8</charset>
         </encoder>
     </appender>
-    <appender name="RocketmqRebalanceLockAppender" class="ch.qos.logback.classic.AsyncAppender">
+    <appender name="RocketmqRebalanceLockAppender" class="org.apache.rocketmq.shade.ch.qos.logback.classic.AsyncAppender">
         <appender-ref ref="RocketmqRebalanceLockAppender_inner"/>
     </appender>
 
     <appender name="RocketmqFilterAppender_inner"
-              class="ch.qos.logback.core.rolling.RollingFileAppender">
+              class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.RollingFileAppender">
         <file>${user.home}/logs/rocketmqlogs/${brokerLogDir}/filter.log</file>
         <append>true</append>
-        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+        <rollingPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
             <fileNamePattern>${user.home}/logs/rocketmqlogs/otherdays/${brokerLogDir}/filter.%i.log.gz</fileNamePattern>
             <minIndex>1</minIndex>
             <maxIndex>10</maxIndex>
         </rollingPolicy>
-        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+        <triggeringPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
             <maxFileSize>100MB</maxFileSize>
         </triggeringPolicy>
         <encoder>
@@ -265,20 +265,20 @@
             <charset class="java.nio.charset.Charset">UTF-8</charset>
         </encoder>
     </appender>
-    <appender name="RocketmqFilterAppender" class="ch.qos.logback.classic.AsyncAppender">
+    <appender name="RocketmqFilterAppender" class="org.apache.rocketmq.shade.ch.qos.logback.classic.AsyncAppender">
         <appender-ref ref="RocketmqFilterAppender_inner"/>
     </appender>
 
     <appender name="RocketmqStatsAppender"
-              class="ch.qos.logback.core.rolling.RollingFileAppender">
+              class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.RollingFileAppender">
         <file>${user.home}/logs/rocketmqlogs/${brokerLogDir}/stats.log</file>
         <append>true</append>
-        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+        <rollingPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
             <fileNamePattern>${user.home}/logs/rocketmqlogs/otherdays/${brokerLogDir}/stats.%i.log.gz</fileNamePattern>
             <minIndex>1</minIndex>
             <maxIndex>5</maxIndex>
         </rollingPolicy>
-        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+        <triggeringPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
             <maxFileSize>100MB</maxFileSize>
         </triggeringPolicy>
         <encoder>
@@ -288,31 +288,31 @@
     </appender>
 
     <appender name="RocketmqCommercialAppender"
-              class="ch.qos.logback.core.rolling.RollingFileAppender">
+              class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.RollingFileAppender">
         <file>${user.home}/logs/rocketmqlogs/${brokerLogDir}/commercial.log</file>
         <append>true</append>
-        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+        <rollingPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
             <fileNamePattern>${user.home}/logs/rocketmqlogs/otherdays/${brokerLogDir}/commercial.%i.log.gz</fileNamePattern>
             <minIndex>1</minIndex>
             <maxIndex>10</maxIndex>
         </rollingPolicy>
-        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+        <triggeringPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
             <maxFileSize>500MB</maxFileSize>
         </triggeringPolicy>
     </appender>
 
     <appender name="RocketmqPopAppender_inner"
-              class="ch.qos.logback.core.rolling.RollingFileAppender">
+              class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.RollingFileAppender">
         <file>${user.home}/logs/rocketmqlogs/pop.log</file>
         <append>true</append>
-        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+        <rollingPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
             <fileNamePattern>${user.home}/logs/rocketmqlogs/otherdays/pop.%i.log
             </fileNamePattern>
             <minIndex>1</minIndex>
             <maxIndex>20</maxIndex>
         </rollingPolicy>
         <triggeringPolicy
-            class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+            class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
             <maxFileSize>128MB</maxFileSize>
         </triggeringPolicy>
         <encoder>
@@ -321,11 +321,11 @@
         </encoder>
     </appender>
 
-    <appender name="RocketmqPopAppender" class="ch.qos.logback.classic.AsyncAppender">
+    <appender name="RocketmqPopAppender" class="org.apache.rocketmq.shade.ch.qos.logback.classic.AsyncAppender">
         <appender-ref ref="RocketmqPopAppender_inner"/>
     </appender>
 
-    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+    <appender name="STDOUT" class="org.apache.rocketmq.shade.ch.qos.logback.core.ConsoleAppender">
         <append>true</append>
         <encoder>
             <pattern>%d{yyy-MM-dd HH:mm:ss,GMT+8} %p %t - %m%n</pattern>
diff --git a/proxy/src/test/java/org/apache/rocketmq/proxy/ProxyStartupTest.java b/proxy/src/test/java/org/apache/rocketmq/proxy/ProxyStartupTest.java
index f857ef6..58213df 100644
--- a/proxy/src/test/java/org/apache/rocketmq/proxy/ProxyStartupTest.java
+++ b/proxy/src/test/java/org/apache/rocketmq/proxy/ProxyStartupTest.java
@@ -33,7 +33,6 @@
 import org.apache.rocketmq.broker.BrokerController;
 import org.apache.rocketmq.broker.BrokerStartup;
 import org.apache.rocketmq.broker.metrics.BrokerMetricsManager;
-import org.apache.rocketmq.client.log.ClientLogger;
 import org.apache.rocketmq.common.MixAll;
 import org.apache.rocketmq.proxy.config.Configuration;
 import org.apache.rocketmq.proxy.config.ConfigurationManager;
@@ -136,7 +135,6 @@
         System.clearProperty(RMQ_PROXY_HOME);
         System.clearProperty(MixAll.NAMESRV_ADDR_PROPERTY);
         System.clearProperty(Configuration.CONFIG_PATH_PROPERTY);
-        System.clearProperty(ClientLogger.CLIENT_LOG_USESLF4J);
         recursiveDelete(proxyHome);
     }
 
@@ -162,7 +160,7 @@
         assertEquals(proxyMode, commandLineArgument.getProxyMode());
         assertEquals(namesrvAddr, commandLineArgument.getNamesrvAddr());
 
-        ProxyStartup.initLogAndConfiguration(commandLineArgument);
+        ProxyStartup.initConfiguration(commandLineArgument);
 
         ProxyConfig config = ConfigurationManager.getProxyConfig();
         assertEquals(brokerConfigPath, config.getBrokerConfigPath());
@@ -177,7 +175,7 @@
         CommandLineArgument commandLineArgument = ProxyStartup.parseCommandLineArgument(new String[] {
             "-pm", "local"
         });
-        ProxyStartup.initLogAndConfiguration(commandLineArgument);
+        ProxyStartup.initConfiguration(commandLineArgument);
 
         ProxyConfig config = ConfigurationManager.getProxyConfig();
         assertEquals(namesrvAddr, config.getNamesrvAddr());
@@ -222,7 +220,7 @@
             "-pm", "local",
             "-pc", configFilePath.toAbsolutePath().toString()
         });
-        ProxyStartup.initLogAndConfiguration(commandLineArgument);
+        ProxyStartup.initConfiguration(commandLineArgument);
 
         ProxyConfig config = ConfigurationManager.getProxyConfig();
         assertEquals(namesrvAddr, config.getNamesrvAddr());
@@ -245,7 +243,7 @@
             "-pc", configFilePath.toAbsolutePath().toString(),
             "-n", namesrvAddr
         });
-        ProxyStartup.initLogAndConfiguration(commandLineArgument);
+        ProxyStartup.initConfiguration(commandLineArgument);
 
         ProxyConfig config = ConfigurationManager.getProxyConfig();
         assertEquals(namesrvAddr, config.getNamesrvAddr());
@@ -270,7 +268,7 @@
             "-n", namesrvAddr,
             "-bc", brokerConfigFilePath.toAbsolutePath().toString()
         });
-        ProxyStartup.initLogAndConfiguration(commandLineArgument);
+        ProxyStartup.initConfiguration(commandLineArgument);
 
         ProxyConfig config = ConfigurationManager.getProxyConfig();
         assertEquals(namesrvAddr, config.getNamesrvAddr());
@@ -284,7 +282,7 @@
         CommandLineArgument commandLineArgument = ProxyStartup.parseCommandLineArgument(new String[] {
             "-pm", "cluster"
         });
-        ProxyStartup.initLogAndConfiguration(commandLineArgument);
+        ProxyStartup.initConfiguration(commandLineArgument);
 
         try (MockedStatic<DefaultMessagingProcessor> messagingProcessorMocked = mockStatic(DefaultMessagingProcessor.class)) {
             DefaultMessagingProcessor processor = mock(DefaultMessagingProcessor.class);
diff --git a/proxy/src/test/java/org/apache/rocketmq/proxy/common/ReceiptHandleGroupTest.java b/proxy/src/test/java/org/apache/rocketmq/proxy/common/ReceiptHandleGroupTest.java
index 8bdff65..93abae3 100644
--- a/proxy/src/test/java/org/apache/rocketmq/proxy/common/ReceiptHandleGroupTest.java
+++ b/proxy/src/test/java/org/apache/rocketmq/proxy/common/ReceiptHandleGroupTest.java
@@ -27,7 +27,7 @@
 import org.apache.rocketmq.common.consumer.ReceiptHandle;
 import org.apache.rocketmq.common.message.MessageClientIDSetter;
 import org.apache.rocketmq.proxy.common.utils.FutureUtils;
-import org.apache.rocketmq.proxy.config.InitConfigAndLoggerTest;
+import org.apache.rocketmq.proxy.config.InitConfigTest;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -37,7 +37,7 @@
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 
-public class ReceiptHandleGroupTest extends InitConfigAndLoggerTest {
+public class ReceiptHandleGroupTest extends InitConfigTest {
 
     private static final String TOPIC = "topic";
     private static final String GROUP = "group";
diff --git a/proxy/src/test/java/org/apache/rocketmq/proxy/config/ConfigurationManagerTest.java b/proxy/src/test/java/org/apache/rocketmq/proxy/config/ConfigurationManagerTest.java
index ca36f5f..bfa92c0 100644
--- a/proxy/src/test/java/org/apache/rocketmq/proxy/config/ConfigurationManagerTest.java
+++ b/proxy/src/test/java/org/apache/rocketmq/proxy/config/ConfigurationManagerTest.java
@@ -22,7 +22,7 @@
 
 import static org.assertj.core.api.Assertions.assertThat;
 
-public class ConfigurationManagerTest extends InitConfigAndLoggerTest {
+public class ConfigurationManagerTest extends InitConfigTest {
 
     @Test
     public void testInitEnv() {
diff --git a/proxy/src/test/java/org/apache/rocketmq/proxy/config/InitConfigAndLoggerTest.java b/proxy/src/test/java/org/apache/rocketmq/proxy/config/InitConfigAndLoggerTest.java
deleted file mode 100644
index e844221..0000000
--- a/proxy/src/test/java/org/apache/rocketmq/proxy/config/InitConfigAndLoggerTest.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.rocketmq.proxy.config;
-
-import ch.qos.logback.classic.LoggerContext;
-import ch.qos.logback.classic.joran.JoranConfigurator;
-import ch.qos.logback.core.joran.spi.JoranException;
-import java.net.URL;
-import org.apache.rocketmq.client.log.ClientLogger;
-import org.assertj.core.util.Strings;
-
-import java.io.IOException;
-import java.io.InputStream;
-import org.junit.After;
-import org.junit.Before;
-import org.slf4j.LoggerFactory;
-
-import static org.apache.rocketmq.proxy.config.ConfigurationManager.RMQ_PROXY_HOME;
-
-public class InitConfigAndLoggerTest {
-    public static String mockProxyHome = "/mock/rmq/proxy/home";
-
-    @Before
-    public void before() throws Throwable {
-        URL mockProxyHomeURL = getClass().getClassLoader().getResource("rmq-proxy-home");
-        if (mockProxyHomeURL != null) {
-            mockProxyHome = mockProxyHomeURL.toURI().getPath();
-        }
-
-        if (!Strings.isNullOrEmpty(mockProxyHome)) {
-            System.setProperty(RMQ_PROXY_HOME, mockProxyHome);
-        }
-
-        ConfigurationManager.initEnv();
-        ConfigurationManager.intConfig();
-        initLogger();
-    }
-
-    @After
-    public void after() {
-        System.clearProperty(RMQ_PROXY_HOME);
-        System.clearProperty(ClientLogger.CLIENT_LOG_USESLF4J);
-    }
-
-    private static void initLogger() throws JoranException {
-        System.setProperty(ClientLogger.CLIENT_LOG_USESLF4J, "true");
-
-        LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
-        JoranConfigurator configurator = new JoranConfigurator();
-        configurator.setContext(lc);
-        lc.reset();
-        // https://logback.qos.ch/manual/configuration.html
-        lc.setPackagingDataEnabled(false);
-
-        try (InputStream inputStream = InitConfigAndLoggerTest.class.getClassLoader()
-                .getResourceAsStream("rmq-proxy-home/conf/logback_proxy.xml")) {
-            if (null != inputStream) {
-                configurator.doConfigure(inputStream);
-                return;
-            }
-        } catch (IOException ignore) {
-        }
-
-        configurator.doConfigure(mockProxyHome + "/conf/logback_proxy.xml");
-    }
-}
\ No newline at end of file
diff --git a/proxy/src/test/java/org/apache/rocketmq/proxy/config/InitConfigTest.java b/proxy/src/test/java/org/apache/rocketmq/proxy/config/InitConfigTest.java
new file mode 100644
index 0000000..d71d163
--- /dev/null
+++ b/proxy/src/test/java/org/apache/rocketmq/proxy/config/InitConfigTest.java
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.rocketmq.proxy.config;
+
+import java.net.URL;
+import org.assertj.core.util.Strings;
+
+import org.junit.After;
+import org.junit.Before;
+
+import static org.apache.rocketmq.proxy.config.ConfigurationManager.RMQ_PROXY_HOME;
+
+public class InitConfigTest {
+    public static String mockProxyHome = "/mock/rmq/proxy/home";
+
+    @Before
+    public void before() throws Throwable {
+        URL mockProxyHomeURL = getClass().getClassLoader().getResource("rmq-proxy-home");
+        if (mockProxyHomeURL != null) {
+            mockProxyHome = mockProxyHomeURL.toURI().getPath();
+        }
+
+        if (!Strings.isNullOrEmpty(mockProxyHome)) {
+            System.setProperty(RMQ_PROXY_HOME, mockProxyHome);
+        }
+
+        ConfigurationManager.initEnv();
+        ConfigurationManager.intConfig();
+    }
+
+    @After
+    public void after() {
+        System.clearProperty(RMQ_PROXY_HOME);
+    }
+}
\ No newline at end of file
diff --git a/proxy/src/test/java/org/apache/rocketmq/proxy/grpc/v2/AbstractMessingActivityTest.java b/proxy/src/test/java/org/apache/rocketmq/proxy/grpc/v2/AbstractMessingActivityTest.java
index 7737745..3c29673 100644
--- a/proxy/src/test/java/org/apache/rocketmq/proxy/grpc/v2/AbstractMessingActivityTest.java
+++ b/proxy/src/test/java/org/apache/rocketmq/proxy/grpc/v2/AbstractMessingActivityTest.java
@@ -20,7 +20,7 @@
 import apache.rocketmq.v2.Resource;
 import org.apache.rocketmq.common.MixAll;
 import org.apache.rocketmq.common.topic.TopicValidator;
-import org.apache.rocketmq.proxy.config.InitConfigAndLoggerTest;
+import org.apache.rocketmq.proxy.config.InitConfigTest;
 import org.apache.rocketmq.proxy.grpc.v2.channel.GrpcChannelManager;
 import org.apache.rocketmq.proxy.grpc.v2.common.GrpcClientSettingsManager;
 import org.apache.rocketmq.proxy.grpc.v2.common.GrpcProxyException;
@@ -30,7 +30,7 @@
 
 import static org.junit.Assert.assertThrows;
 
-public class AbstractMessingActivityTest extends InitConfigAndLoggerTest {
+public class AbstractMessingActivityTest extends InitConfigTest {
 
     public static class MockMessingActivity extends AbstractMessingActivity {
 
diff --git a/proxy/src/test/java/org/apache/rocketmq/proxy/grpc/v2/BaseActivityTest.java b/proxy/src/test/java/org/apache/rocketmq/proxy/grpc/v2/BaseActivityTest.java
index e377f5f..635e4b5 100644
--- a/proxy/src/test/java/org/apache/rocketmq/proxy/grpc/v2/BaseActivityTest.java
+++ b/proxy/src/test/java/org/apache/rocketmq/proxy/grpc/v2/BaseActivityTest.java
@@ -23,7 +23,7 @@
 import java.util.UUID;
 import org.apache.rocketmq.proxy.common.ContextVariable;
 import org.apache.rocketmq.proxy.common.ProxyContext;
-import org.apache.rocketmq.proxy.config.InitConfigAndLoggerTest;
+import org.apache.rocketmq.proxy.config.InitConfigTest;
 import org.apache.rocketmq.proxy.grpc.interceptor.InterceptorConstants;
 import org.apache.rocketmq.proxy.grpc.v2.channel.GrpcChannelManager;
 import org.apache.rocketmq.proxy.grpc.v2.common.GrpcClientSettingsManager;
@@ -41,7 +41,7 @@
 
 @Ignore
 @RunWith(MockitoJUnitRunner.Silent.class)
-public class BaseActivityTest extends InitConfigAndLoggerTest {
+public class BaseActivityTest extends InitConfigTest {
     protected static final Random RANDOM = new Random();
     protected MessagingProcessor messagingProcessor;
     protected GrpcClientSettingsManager grpcClientSettingsManager;
diff --git a/proxy/src/test/java/org/apache/rocketmq/proxy/grpc/v2/GrpcMessagingApplicationTest.java b/proxy/src/test/java/org/apache/rocketmq/proxy/grpc/v2/GrpcMessagingApplicationTest.java
index 4d521ad..7ba03fd 100644
--- a/proxy/src/test/java/org/apache/rocketmq/proxy/grpc/v2/GrpcMessagingApplicationTest.java
+++ b/proxy/src/test/java/org/apache/rocketmq/proxy/grpc/v2/GrpcMessagingApplicationTest.java
@@ -31,7 +31,7 @@
 import java.util.UUID;
 import java.util.concurrent.CompletableFuture;
 import org.apache.rocketmq.proxy.common.ProxyContext;
-import org.apache.rocketmq.proxy.config.InitConfigAndLoggerTest;
+import org.apache.rocketmq.proxy.config.InitConfigTest;
 import org.apache.rocketmq.proxy.grpc.interceptor.InterceptorConstants;
 import org.apache.rocketmq.proxy.grpc.v2.common.ResponseBuilder;
 import org.junit.Assert;
@@ -47,7 +47,7 @@
 import static org.junit.Assert.assertEquals;
 
 @RunWith(MockitoJUnitRunner.class)
-public class GrpcMessagingApplicationTest extends InitConfigAndLoggerTest {
+public class GrpcMessagingApplicationTest extends InitConfigTest {
     protected static final String REMOTE_ADDR = "192.168.0.1:8080";
     protected static final String LOCAL_ADDR = "127.0.0.1:8080";
     protected static final String CLIENT_ID = "client-id" + UUID.randomUUID();
diff --git a/proxy/src/test/java/org/apache/rocketmq/proxy/processor/BaseProcessorTest.java b/proxy/src/test/java/org/apache/rocketmq/proxy/processor/BaseProcessorTest.java
index abe7bd2..5c1ea96 100644
--- a/proxy/src/test/java/org/apache/rocketmq/proxy/processor/BaseProcessorTest.java
+++ b/proxy/src/test/java/org/apache/rocketmq/proxy/processor/BaseProcessorTest.java
@@ -28,7 +28,7 @@
 import org.apache.rocketmq.common.message.MessageConst;
 import org.apache.rocketmq.common.message.MessageExt;
 import org.apache.rocketmq.proxy.common.ProxyContext;
-import org.apache.rocketmq.proxy.config.InitConfigAndLoggerTest;
+import org.apache.rocketmq.proxy.config.InitConfigTest;
 import org.apache.rocketmq.proxy.service.ServiceManager;
 import org.apache.rocketmq.proxy.service.message.MessageService;
 import org.apache.rocketmq.proxy.service.metadata.MetadataService;
@@ -45,7 +45,7 @@
 
 @Ignore
 @RunWith(MockitoJUnitRunner.Silent.class)
-public class BaseProcessorTest extends InitConfigAndLoggerTest {
+public class BaseProcessorTest extends InitConfigTest {
     protected static final Random RANDOM = new Random();
 
     @Mock
diff --git a/proxy/src/test/java/org/apache/rocketmq/proxy/service/BaseServiceTest.java b/proxy/src/test/java/org/apache/rocketmq/proxy/service/BaseServiceTest.java
index 947be9e..d4172d9 100644
--- a/proxy/src/test/java/org/apache/rocketmq/proxy/service/BaseServiceTest.java
+++ b/proxy/src/test/java/org/apache/rocketmq/proxy/service/BaseServiceTest.java
@@ -20,7 +20,7 @@
 import java.util.HashMap;
 import org.apache.rocketmq.client.exception.MQClientException;
 import org.apache.rocketmq.common.MixAll;
-import org.apache.rocketmq.proxy.config.InitConfigAndLoggerTest;
+import org.apache.rocketmq.proxy.config.InitConfigTest;
 import org.apache.rocketmq.proxy.service.mqclient.MQClientAPIExt;
 import org.apache.rocketmq.proxy.service.mqclient.MQClientAPIFactory;
 import org.apache.rocketmq.proxy.service.route.MessageQueueView;
@@ -41,7 +41,7 @@
 
 @Ignore
 @RunWith(MockitoJUnitRunner.Silent.class)
-public class BaseServiceTest extends InitConfigAndLoggerTest {
+public class BaseServiceTest extends InitConfigTest {
 
     protected TopicRouteService topicRouteService;
     protected MQClientAPIFactory mqClientAPIFactory;
diff --git a/proxy/src/test/java/org/apache/rocketmq/proxy/service/message/LocalMessageServiceTest.java b/proxy/src/test/java/org/apache/rocketmq/proxy/service/message/LocalMessageServiceTest.java
index 42efc7c..84fc649 100644
--- a/proxy/src/test/java/org/apache/rocketmq/proxy/service/message/LocalMessageServiceTest.java
+++ b/proxy/src/test/java/org/apache/rocketmq/proxy/service/message/LocalMessageServiceTest.java
@@ -51,7 +51,7 @@
 import org.apache.rocketmq.proxy.common.ProxyException;
 import org.apache.rocketmq.proxy.common.ProxyExceptionCode;
 import org.apache.rocketmq.proxy.config.ConfigurationManager;
-import org.apache.rocketmq.proxy.config.InitConfigAndLoggerTest;
+import org.apache.rocketmq.proxy.config.InitConfigTest;
 import org.apache.rocketmq.proxy.service.channel.ChannelManager;
 import org.apache.rocketmq.proxy.service.channel.SimpleChannelHandlerContext;
 import org.apache.rocketmq.proxy.service.route.AddressableMessageQueue;
@@ -80,7 +80,7 @@
 import static org.assertj.core.api.Assertions.catchThrowableOfType;
 
 @RunWith(MockitoJUnitRunner.class)
-public class LocalMessageServiceTest extends InitConfigAndLoggerTest {
+public class LocalMessageServiceTest extends InitConfigTest {
     private LocalMessageService localMessageService;
     @Mock
     private SendMessageProcessor sendMessageProcessorMock;
diff --git a/proxy/src/test/java/org/apache/rocketmq/proxy/service/transaction/AbstractTransactionServiceTest.java b/proxy/src/test/java/org/apache/rocketmq/proxy/service/transaction/AbstractTransactionServiceTest.java
index 055ab0c..6e4af2e 100644
--- a/proxy/src/test/java/org/apache/rocketmq/proxy/service/transaction/AbstractTransactionServiceTest.java
+++ b/proxy/src/test/java/org/apache/rocketmq/proxy/service/transaction/AbstractTransactionServiceTest.java
@@ -24,7 +24,7 @@
 import org.apache.rocketmq.common.message.MessageConst;
 import org.apache.rocketmq.common.sysflag.MessageSysFlag;
 import org.apache.rocketmq.proxy.common.ProxyContext;
-import org.apache.rocketmq.proxy.config.InitConfigAndLoggerTest;
+import org.apache.rocketmq.proxy.config.InitConfigTest;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -32,7 +32,7 @@
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 
-public class AbstractTransactionServiceTest extends InitConfigAndLoggerTest {
+public class AbstractTransactionServiceTest extends InitConfigTest {
 
     private static final String BROKER_NAME = "mockBroker";
     private static final String PRODUCER_GROUP = "producerGroup";
diff --git a/proxy/src/test/java/org/apache/rocketmq/proxy/service/transaction/TransactionDataManagerTest.java b/proxy/src/test/java/org/apache/rocketmq/proxy/service/transaction/TransactionDataManagerTest.java
index 6388246..f92a784 100644
--- a/proxy/src/test/java/org/apache/rocketmq/proxy/service/transaction/TransactionDataManagerTest.java
+++ b/proxy/src/test/java/org/apache/rocketmq/proxy/service/transaction/TransactionDataManagerTest.java
@@ -22,7 +22,7 @@
 import org.apache.commons.lang3.time.StopWatch;
 import org.apache.rocketmq.common.MixAll;
 import org.apache.rocketmq.common.message.MessageClientIDSetter;
-import org.apache.rocketmq.proxy.config.InitConfigAndLoggerTest;
+import org.apache.rocketmq.proxy.config.InitConfigTest;
 import org.junit.After;
 import org.junit.Assume;
 import org.junit.Before;
@@ -34,7 +34,7 @@
 import static org.junit.Assert.assertSame;
 import static org.junit.Assert.assertTrue;
 
-public class TransactionDataManagerTest extends InitConfigAndLoggerTest {
+public class TransactionDataManagerTest extends InitConfigTest {
     private static final String PRODUCER_GROUP = "producerGroup";
     private static final Random RANDOM = new Random();
     private TransactionDataManager transactionDataManager;
diff --git a/store/src/test/resources/logback-test.xml b/proxy/src/test/resources/rmq.logback-test.xml
similarity index 64%
copy from store/src/test/resources/logback-test.xml
copy to proxy/src/test/resources/rmq.logback-test.xml
index a033816..c3ec0d1 100644
--- a/store/src/test/resources/logback-test.xml
+++ b/proxy/src/test/resources/rmq.logback-test.xml
@@ -17,19 +17,20 @@
   -->
 <configuration>
 
-    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
-        <encoder>
-            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n</pattern>
-            <charset class="java.nio.charset.Charset">UTF-8</charset>
-        </encoder>
+    <appender name="CONSOLE" class="org.apache.rocketmq.shade.ch.qos.logback.core.ConsoleAppender">
+        <layout class="org.apache.rocketmq.shade.ch.qos.logback.classic.PatternLayout">
+            <Pattern>
+                %d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n
+            </Pattern>
+        </layout>
     </appender>
 
-    <logger name="org.apache.rocketmq.store" level="WARN" additivity="false">
-        <appender-ref ref="STDOUT"/>
+    <logger name="org.apache.rocketmq" level="error" additivity="false">
+        <appender-ref ref="CONSOLE"/>
     </logger>
 
-    <root level="OFF">
-        <appender-ref ref="STDOUT"/>
+    <root level="error">
+        <appender-ref ref="CONSOLE"/>
     </root>
 
-</configuration>
+</configuration>
\ No newline at end of file
diff --git a/remoting/BUILD.bazel b/remoting/BUILD.bazel
index 87f1a2b..88d4e95 100644
--- a/remoting/BUILD.bazel
+++ b/remoting/BUILD.bazel
@@ -21,7 +21,6 @@
     srcs = glob(["src/main/java/**/*.java"]),
     visibility = ["//visibility:public"],
     deps = [
-        "//logging",
         "//common",
         "@maven//:com_alibaba_fastjson",
         "@maven//:com_google_guava_guava",
@@ -37,6 +36,7 @@
         "@maven//:io_opentelemetry_opentelemetry_sdk_metrics",
         "@maven//:javax_annotation_javax_annotation_api",
         "@maven//:org_apache_commons_commons_lang3",
+        "@maven//:io_github_aliyun_mq_rocketmq_slf4j_api",
     ],
 )
 
diff --git a/remoting/pom.xml b/remoting/pom.xml
index 1cb7530..1892ce4 100644
--- a/remoting/pom.xml
+++ b/remoting/pom.xml
@@ -15,7 +15,9 @@
   limitations under the License.
   -->
 
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <parent>
         <groupId>org.apache.rocketmq</groupId>
         <artifactId>rocketmq-all</artifactId>
@@ -35,6 +37,7 @@
         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>rocketmq-common</artifactId>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.commons</groupId>
diff --git a/remoting/src/main/java/org/apache/rocketmq/remoting/Configuration.java b/remoting/src/main/java/org/apache/rocketmq/remoting/Configuration.java
index 1db78a2..29cc2c0 100644
--- a/remoting/src/main/java/org/apache/rocketmq/remoting/Configuration.java
+++ b/remoting/src/main/java/org/apache/rocketmq/remoting/Configuration.java
@@ -27,12 +27,12 @@
 import java.util.concurrent.locks.ReadWriteLock;
 import java.util.concurrent.locks.ReentrantReadWriteLock;
 import org.apache.rocketmq.common.MixAll;
-import org.apache.rocketmq.logging.InternalLogger;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
 import org.apache.rocketmq.remoting.protocol.DataVersion;
 
 public class Configuration {
 
-    private final InternalLogger log;
+    private final Logger log;
 
     private List<Object> configObjectList = new ArrayList<>(4);
     private String storePath;
@@ -46,11 +46,11 @@
      */
     private Properties allConfigs = new Properties();
 
-    public Configuration(InternalLogger log) {
+    public Configuration(Logger log) {
         this.log = log;
     }
 
-    public Configuration(InternalLogger log, Object... configObjects) {
+    public Configuration(Logger log, Object... configObjects) {
         this.log = log;
         if (configObjects == null || configObjects.length == 0) {
             return;
@@ -63,7 +63,7 @@
         }
     }
 
-    public Configuration(InternalLogger log, String storePath, Object... configObjects) {
+    public Configuration(Logger log, String storePath, Object... configObjects) {
         this(log, configObjects);
         this.storePath = storePath;
     }
diff --git a/remoting/src/main/java/org/apache/rocketmq/remoting/common/RemotingHelper.java b/remoting/src/main/java/org/apache/rocketmq/remoting/common/RemotingHelper.java
index 68305bb..9490250 100644
--- a/remoting/src/main/java/org/apache/rocketmq/remoting/common/RemotingHelper.java
+++ b/remoting/src/main/java/org/apache/rocketmq/remoting/common/RemotingHelper.java
@@ -27,8 +27,8 @@
 import java.nio.ByteBuffer;
 import java.nio.channels.SocketChannel;
 import org.apache.rocketmq.common.utils.NetworkUtil;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.exception.RemotingCommandException;
 import org.apache.rocketmq.remoting.exception.RemotingConnectException;
 import org.apache.rocketmq.remoting.exception.RemotingSendRequestException;
@@ -42,7 +42,7 @@
     public static final String DEFAULT_CHARSET = "UTF-8";
     public static final String DEFAULT_CIDR_ALL = "0.0.0.0/0";
 
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(ROCKETMQ_REMOTING);
+    private static final Logger log = LoggerFactory.getLogger(ROCKETMQ_REMOTING);
     private static final AttributeKey<String> REMOTE_ADDR_KEY = AttributeKey.valueOf("RemoteAddr");
 
     public static SocketAddress string2SocketAddress(final String addr) {
diff --git a/remoting/src/main/java/org/apache/rocketmq/remoting/common/ServiceThread.java b/remoting/src/main/java/org/apache/rocketmq/remoting/common/ServiceThread.java
index 21fd0ef..9bd1c14 100644
--- a/remoting/src/main/java/org/apache/rocketmq/remoting/common/ServiceThread.java
+++ b/remoting/src/main/java/org/apache/rocketmq/remoting/common/ServiceThread.java
@@ -17,14 +17,14 @@
 package org.apache.rocketmq.remoting.common;
 
 
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 /**
  * Base class for background thread
  */
 public abstract class ServiceThread implements Runnable {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(RemotingHelper.ROCKETMQ_REMOTING);
+    private static final Logger log = LoggerFactory.getLogger(RemotingHelper.ROCKETMQ_REMOTING);
 
     private static final long JOIN_TIME = 90 * 1000;
     protected final Thread thread;
diff --git a/remoting/src/main/java/org/apache/rocketmq/remoting/netty/NettyDecoder.java b/remoting/src/main/java/org/apache/rocketmq/remoting/netty/NettyDecoder.java
index a36de6a..ba89848 100644
--- a/remoting/src/main/java/org/apache/rocketmq/remoting/netty/NettyDecoder.java
+++ b/remoting/src/main/java/org/apache/rocketmq/remoting/netty/NettyDecoder.java
@@ -20,13 +20,13 @@
 import io.netty.buffer.ByteBuf;
 import io.netty.channel.ChannelHandlerContext;
 import io.netty.handler.codec.LengthFieldBasedFrameDecoder;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.common.RemotingHelper;
 import org.apache.rocketmq.remoting.protocol.RemotingCommand;
 
 public class NettyDecoder extends LengthFieldBasedFrameDecoder {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(RemotingHelper.ROCKETMQ_REMOTING);
+    private static final Logger log = LoggerFactory.getLogger(RemotingHelper.ROCKETMQ_REMOTING);
 
     private static final int FRAME_MAX_LENGTH =
         Integer.parseInt(System.getProperty("com.rocketmq.remoting.frameMaxLength", "16777216"));
diff --git a/remoting/src/main/java/org/apache/rocketmq/remoting/netty/NettyEncoder.java b/remoting/src/main/java/org/apache/rocketmq/remoting/netty/NettyEncoder.java
index a8342eb..fbab326 100644
--- a/remoting/src/main/java/org/apache/rocketmq/remoting/netty/NettyEncoder.java
+++ b/remoting/src/main/java/org/apache/rocketmq/remoting/netty/NettyEncoder.java
@@ -20,14 +20,14 @@
 import io.netty.channel.ChannelHandler;
 import io.netty.channel.ChannelHandlerContext;
 import io.netty.handler.codec.MessageToByteEncoder;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.common.RemotingHelper;
 import org.apache.rocketmq.remoting.protocol.RemotingCommand;
 
 @ChannelHandler.Sharable
 public class NettyEncoder extends MessageToByteEncoder<RemotingCommand> {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(RemotingHelper.ROCKETMQ_REMOTING);
+    private static final Logger log = LoggerFactory.getLogger(RemotingHelper.ROCKETMQ_REMOTING);
 
     @Override
     public void encode(ChannelHandlerContext ctx, RemotingCommand remotingCommand, ByteBuf out)
diff --git a/remoting/src/main/java/org/apache/rocketmq/remoting/netty/NettyLogger.java b/remoting/src/main/java/org/apache/rocketmq/remoting/netty/NettyLogger.java
index 1a0c9b5..69dd34d 100644
--- a/remoting/src/main/java/org/apache/rocketmq/remoting/netty/NettyLogger.java
+++ b/remoting/src/main/java/org/apache/rocketmq/remoting/netty/NettyLogger.java
@@ -19,8 +19,8 @@
 
 
 import io.netty.util.internal.logging.InternalLogLevel;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 import java.util.concurrent.atomic.AtomicBoolean;
 
@@ -50,12 +50,12 @@
 
     private static class NettyBridgeLogger implements io.netty.util.internal.logging.InternalLogger {
 
-        private InternalLogger logger = null;
+        private Logger logger = null;
 
         private static final String EXCEPTION_MESSAGE = "Unexpected exception:";
 
         public NettyBridgeLogger(String name) {
-            logger = InternalLoggerFactory.getLogger(name);
+            logger = LoggerFactory.getLogger(name);
         }
 
         @Override
diff --git a/remoting/src/main/java/org/apache/rocketmq/remoting/netty/NettyRemotingAbstract.java b/remoting/src/main/java/org/apache/rocketmq/remoting/netty/NettyRemotingAbstract.java
index a9702d6..68dae5b 100644
--- a/remoting/src/main/java/org/apache/rocketmq/remoting/netty/NettyRemotingAbstract.java
+++ b/remoting/src/main/java/org/apache/rocketmq/remoting/netty/NettyRemotingAbstract.java
@@ -42,8 +42,8 @@
 import org.apache.rocketmq.common.Pair;
 import org.apache.rocketmq.common.ServiceThread;
 import org.apache.rocketmq.common.UtilAll;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.ChannelEventListener;
 import org.apache.rocketmq.remoting.InvokeCallback;
 import org.apache.rocketmq.remoting.RPCHook;
@@ -69,7 +69,7 @@
     /**
      * Remoting logger instance.
      */
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(RemotingHelper.ROCKETMQ_REMOTING);
+    private static final Logger log = LoggerFactory.getLogger(RemotingHelper.ROCKETMQ_REMOTING);
 
     /**
      * Semaphore to limit maximum number of on-going one-way requests, which protects system memory footprint.
diff --git a/remoting/src/main/java/org/apache/rocketmq/remoting/netty/NettyRemotingClient.java b/remoting/src/main/java/org/apache/rocketmq/remoting/netty/NettyRemotingClient.java
index 5c4400d..736e093 100644
--- a/remoting/src/main/java/org/apache/rocketmq/remoting/netty/NettyRemotingClient.java
+++ b/remoting/src/main/java/org/apache/rocketmq/remoting/netty/NettyRemotingClient.java
@@ -69,8 +69,8 @@
 import java.util.concurrent.locks.ReentrantLock;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.rocketmq.common.Pair;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.ChannelEventListener;
 import org.apache.rocketmq.remoting.InvokeCallback;
 import org.apache.rocketmq.remoting.RemotingClient;
@@ -83,7 +83,7 @@
 import org.apache.rocketmq.remoting.proxy.SocksProxyConfig;
 
 public class NettyRemotingClient extends NettyRemotingAbstract implements RemotingClient {
-    private static final InternalLogger LOGGER = InternalLoggerFactory.getLogger(RemotingHelper.ROCKETMQ_REMOTING);
+    private static final Logger LOGGER = LoggerFactory.getLogger(RemotingHelper.ROCKETMQ_REMOTING);
 
     private static final long LOCK_TIMEOUT_MILLIS = 3000;
 
diff --git a/remoting/src/main/java/org/apache/rocketmq/remoting/netty/NettyRemotingServer.java b/remoting/src/main/java/org/apache/rocketmq/remoting/netty/NettyRemotingServer.java
index 9d00443..6062467 100644
--- a/remoting/src/main/java/org/apache/rocketmq/remoting/netty/NettyRemotingServer.java
+++ b/remoting/src/main/java/org/apache/rocketmq/remoting/netty/NettyRemotingServer.java
@@ -57,8 +57,8 @@
 import java.util.concurrent.atomic.AtomicInteger;
 import org.apache.rocketmq.common.Pair;
 import org.apache.rocketmq.common.utils.NetworkUtil;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.ChannelEventListener;
 import org.apache.rocketmq.remoting.InvokeCallback;
 import org.apache.rocketmq.remoting.RemotingServer;
@@ -71,9 +71,9 @@
 
 @SuppressWarnings("NullableProblems")
 public class NettyRemotingServer extends NettyRemotingAbstract implements RemotingServer {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(RemotingHelper.ROCKETMQ_REMOTING);
-    private static final InternalLogger TRAFFIC_LOGGER =
-        InternalLoggerFactory.getLogger(RemotingHelper.ROCKETMQ_TRAFFIC);
+    private static final Logger log = LoggerFactory.getLogger(RemotingHelper.ROCKETMQ_REMOTING);
+    private static final Logger TRAFFIC_LOGGER =
+        LoggerFactory.getLogger(RemotingHelper.ROCKETMQ_TRAFFIC);
 
     private final ServerBootstrap serverBootstrap;
     private final EventLoopGroup eventLoopGroupSelector;
diff --git a/remoting/src/main/java/org/apache/rocketmq/remoting/netty/TlsHelper.java b/remoting/src/main/java/org/apache/rocketmq/remoting/netty/TlsHelper.java
index 5003ce3..5ea73c5 100644
--- a/remoting/src/main/java/org/apache/rocketmq/remoting/netty/TlsHelper.java
+++ b/remoting/src/main/java/org/apache/rocketmq/remoting/netty/TlsHelper.java
@@ -31,8 +31,8 @@
 import java.security.cert.CertificateException;
 import java.util.Properties;
 import org.apache.rocketmq.remoting.common.RemotingHelper;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 import static org.apache.rocketmq.remoting.netty.TlsSystemConfig.TLS_CLIENT_AUTHSERVER;
 import static org.apache.rocketmq.remoting.netty.TlsSystemConfig.TLS_CLIENT_CERTPATH;
@@ -73,7 +73,7 @@
         InputStream decryptPrivateKey(String privateKeyEncryptPath, boolean forClient) throws IOException;
     }
 
-    private static final InternalLogger LOGGER = InternalLoggerFactory.getLogger(RemotingHelper.ROCKETMQ_REMOTING);
+    private static final Logger LOGGER = LoggerFactory.getLogger(RemotingHelper.ROCKETMQ_REMOTING);
 
     private static DecryptionStrategy decryptionStrategy = new DecryptionStrategy() {
         @Override
diff --git a/remoting/src/main/java/org/apache/rocketmq/remoting/protocol/MQProtosHelper.java b/remoting/src/main/java/org/apache/rocketmq/remoting/protocol/MQProtosHelper.java
index 4120e7c..dc0dfe5 100644
--- a/remoting/src/main/java/org/apache/rocketmq/remoting/protocol/MQProtosHelper.java
+++ b/remoting/src/main/java/org/apache/rocketmq/remoting/protocol/MQProtosHelper.java
@@ -18,13 +18,13 @@
 package org.apache.rocketmq.remoting.protocol;
 
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.common.RemotingHelper;
 import org.apache.rocketmq.remoting.protocol.header.namesrv.RegisterBrokerRequestHeader;
 
 public class MQProtosHelper {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.COMMON_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.COMMON_LOGGER_NAME);
 
     public static boolean registerBrokerToNameServer(final String nsaddr, final String brokerAddr,
         final long timeoutMillis) {
diff --git a/remoting/src/main/java/org/apache/rocketmq/remoting/protocol/RemotingCommand.java b/remoting/src/main/java/org/apache/rocketmq/remoting/protocol/RemotingCommand.java
index a3815ae..adead31 100644
--- a/remoting/src/main/java/org/apache/rocketmq/remoting/protocol/RemotingCommand.java
+++ b/remoting/src/main/java/org/apache/rocketmq/remoting/protocol/RemotingCommand.java
@@ -32,8 +32,8 @@
 import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.atomic.AtomicInteger;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.CommandCustomHeader;
 import org.apache.rocketmq.remoting.annotation.CFNotNull;
 import org.apache.rocketmq.remoting.common.RemotingHelper;
@@ -43,7 +43,7 @@
     public static final String SERIALIZE_TYPE_PROPERTY = "rocketmq.serialize.type";
     public static final String SERIALIZE_TYPE_ENV = "ROCKETMQ_SERIALIZE_TYPE";
     public static final String REMOTING_VERSION_KEY = "rocketmq.remoting.version";
-    static final InternalLogger log = InternalLoggerFactory.getLogger(RemotingHelper.ROCKETMQ_REMOTING);
+    static final Logger log = LoggerFactory.getLogger(RemotingHelper.ROCKETMQ_REMOTING);
     private static final int RPC_TYPE = 0; // 0, REQUEST_COMMAND
     private static final int RPC_ONEWAY = 1; // 0, RPC
     private static final Map<Class<? extends CommandCustomHeader>, Field[]> CLASS_HASH_MAP =
diff --git a/remoting/src/main/java/org/apache/rocketmq/remoting/protocol/body/RegisterBrokerBody.java b/remoting/src/main/java/org/apache/rocketmq/remoting/protocol/body/RegisterBrokerBody.java
index 586335a..f04bec4 100644
--- a/remoting/src/main/java/org/apache/rocketmq/remoting/protocol/body/RegisterBrokerBody.java
+++ b/remoting/src/main/java/org/apache/rocketmq/remoting/protocol/body/RegisterBrokerBody.java
@@ -33,15 +33,15 @@
 import org.apache.rocketmq.common.MixAll;
 import org.apache.rocketmq.common.TopicConfig;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.protocol.DataVersion;
 import org.apache.rocketmq.remoting.protocol.RemotingSerializable;
 import org.apache.rocketmq.remoting.protocol.statictopic.TopicQueueMappingInfo;
 
 public class RegisterBrokerBody extends RemotingSerializable {
 
-    private static final InternalLogger LOGGER = InternalLoggerFactory.getLogger(LoggerName.COMMON_LOGGER_NAME);
+    private static final Logger LOGGER = LoggerFactory.getLogger(LoggerName.COMMON_LOGGER_NAME);
     private TopicConfigAndMappingSerializeWrapper topicConfigSerializeWrapper = new TopicConfigAndMappingSerializeWrapper();
     private List<String> filterServerList = new ArrayList<>();
 
diff --git a/remoting/src/main/java/org/apache/rocketmq/remoting/rpc/ClientMetadata.java b/remoting/src/main/java/org/apache/rocketmq/remoting/rpc/ClientMetadata.java
index 77bb7be..6a19e64 100644
--- a/remoting/src/main/java/org/apache/rocketmq/remoting/rpc/ClientMetadata.java
+++ b/remoting/src/main/java/org/apache/rocketmq/remoting/rpc/ClientMetadata.java
@@ -27,8 +27,8 @@
 import org.apache.rocketmq.common.MixAll;
 import org.apache.rocketmq.common.constant.LoggerName;
 import org.apache.rocketmq.common.message.MessageQueue;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.protocol.body.ClusterInfo;
 import org.apache.rocketmq.remoting.protocol.route.BrokerData;
 import org.apache.rocketmq.remoting.protocol.route.TopicRouteData;
@@ -36,7 +36,7 @@
 import org.apache.rocketmq.remoting.protocol.statictopic.TopicQueueMappingUtils;
 
 public class ClientMetadata {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.COMMON_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.COMMON_LOGGER_NAME);
 
     private final ConcurrentMap<String/* Topic */, TopicRouteData> topicRouteTable = new ConcurrentHashMap<>();
     private final ConcurrentMap<String/* Topic */, ConcurrentMap<MessageQueue, String/*brokerName*/>> topicEndPointsTable = new ConcurrentHashMap<>();
diff --git a/store/src/test/resources/logback-test.xml b/remoting/src/test/resources/rmq.logback-test.xml
similarity index 64%
copy from store/src/test/resources/logback-test.xml
copy to remoting/src/test/resources/rmq.logback-test.xml
index a033816..c3ec0d1 100644
--- a/store/src/test/resources/logback-test.xml
+++ b/remoting/src/test/resources/rmq.logback-test.xml
@@ -17,19 +17,20 @@
   -->
 <configuration>
 
-    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
-        <encoder>
-            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n</pattern>
-            <charset class="java.nio.charset.Charset">UTF-8</charset>
-        </encoder>
+    <appender name="CONSOLE" class="org.apache.rocketmq.shade.ch.qos.logback.core.ConsoleAppender">
+        <layout class="org.apache.rocketmq.shade.ch.qos.logback.classic.PatternLayout">
+            <Pattern>
+                %d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n
+            </Pattern>
+        </layout>
     </appender>
 
-    <logger name="org.apache.rocketmq.store" level="WARN" additivity="false">
-        <appender-ref ref="STDOUT"/>
+    <logger name="org.apache.rocketmq" level="error" additivity="false">
+        <appender-ref ref="CONSOLE"/>
     </logger>
 
-    <root level="OFF">
-        <appender-ref ref="STDOUT"/>
+    <root level="error">
+        <appender-ref ref="CONSOLE"/>
     </root>
 
-</configuration>
+</configuration>
\ No newline at end of file
diff --git a/srvutil/BUILD.bazel b/srvutil/BUILD.bazel
index 9f6fcc2..33e8537 100644
--- a/srvutil/BUILD.bazel
+++ b/srvutil/BUILD.bazel
@@ -23,7 +23,6 @@
     deps = [
         "//common",
         "//remoting",
-        "//logging",        
         "@maven//:org_apache_commons_commons_lang3",
         "@maven//:commons_validator_commons_validator",
         "@maven//:com_github_luben_zstd_jni",
@@ -33,6 +32,7 @@
         "@maven//:commons_cli_commons_cli",
         "@maven//:com_googlecode_concurrentlinkedhashmap_concurrentlinkedhashmap_lru",
         "@maven//:com_google_guava_guava",
+        "@maven//:io_github_aliyun_mq_rocketmq_slf4j_api",
     ],
 )
 
diff --git a/srvutil/pom.xml b/srvutil/pom.xml
index 3c638cd..5257842 100644
--- a/srvutil/pom.xml
+++ b/srvutil/pom.xml
@@ -35,10 +35,12 @@
         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>rocketmq-remoting</artifactId>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>rocketmq-common</artifactId>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>commons-cli</groupId>
@@ -52,10 +54,5 @@
             <groupId>com.googlecode.concurrentlinkedhashmap</groupId>
             <artifactId>concurrentlinkedhashmap-lru</artifactId>
         </dependency>
-        <dependency>
-            <groupId>ch.qos.logback</groupId>
-            <artifactId>logback-classic</artifactId>
-            <scope>test</scope>
-        </dependency>
     </dependencies>
 </project>
diff --git a/srvutil/src/main/java/org/apache/rocketmq/srvutil/AclFileWatchService.java b/srvutil/src/main/java/org/apache/rocketmq/srvutil/AclFileWatchService.java
index e6fe5b3..3110b6a 100644
--- a/srvutil/src/main/java/org/apache/rocketmq/srvutil/AclFileWatchService.java
+++ b/srvutil/src/main/java/org/apache/rocketmq/srvutil/AclFileWatchService.java
@@ -22,8 +22,8 @@
 import org.apache.rocketmq.common.ServiceThread;
 import org.apache.rocketmq.common.UtilAll;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import java.io.File;
 import java.io.IOException;
 import java.nio.file.Files;
@@ -34,7 +34,7 @@
 import java.util.Map;
 
 public class AclFileWatchService extends ServiceThread {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.COMMON_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.COMMON_LOGGER_NAME);
 
     private final String aclPath;
     private int aclFilesNum;
diff --git a/srvutil/src/main/java/org/apache/rocketmq/srvutil/FileWatchService.java b/srvutil/src/main/java/org/apache/rocketmq/srvutil/FileWatchService.java
index e8beabc..9591dfb 100644
--- a/srvutil/src/main/java/org/apache/rocketmq/srvutil/FileWatchService.java
+++ b/srvutil/src/main/java/org/apache/rocketmq/srvutil/FileWatchService.java
@@ -29,11 +29,11 @@
 import org.apache.rocketmq.common.LifecycleAwareServiceThread;
 import org.apache.rocketmq.common.UtilAll;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 public class FileWatchService extends LifecycleAwareServiceThread {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.COMMON_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.COMMON_LOGGER_NAME);
 
     private final Map<String, String> currentHash = new HashMap<>();
     private final Listener listener;
diff --git a/srvutil/src/main/java/org/apache/rocketmq/srvutil/ShutdownHookThread.java b/srvutil/src/main/java/org/apache/rocketmq/srvutil/ShutdownHookThread.java
index ba01e1e..3d040de 100644
--- a/srvutil/src/main/java/org/apache/rocketmq/srvutil/ShutdownHookThread.java
+++ b/srvutil/src/main/java/org/apache/rocketmq/srvutil/ShutdownHookThread.java
@@ -17,7 +17,7 @@
 
 package org.apache.rocketmq.srvutil;
 
-import org.apache.rocketmq.logging.InternalLogger;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
 
 import java.util.concurrent.Callable;
 import java.util.concurrent.atomic.AtomicInteger;
@@ -29,7 +29,7 @@
 public class ShutdownHookThread extends Thread {
     private volatile boolean hasShutdown = false;
     private AtomicInteger shutdownTimes = new AtomicInteger(0);
-    private final InternalLogger log;
+    private final Logger log;
     private final Callable callback;
 
     /**
@@ -38,7 +38,7 @@
      * @param log The log instance is used in hook thread.
      * @param callback The call back function.
      */
-    public ShutdownHookThread(InternalLogger log, Callable callback) {
+    public ShutdownHookThread(Logger log, Callable callback) {
         super("ShutdownHook");
         this.log = log;
         this.callback = callback;
diff --git a/srvutil/src/test/java/logback-test.xml b/srvutil/src/test/java/logback-test.xml
deleted file mode 100644
index 2835f5d..0000000
--- a/srvutil/src/test/java/logback-test.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-  -->
-<configuration>
-    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
-        <encoder>
-            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
-        </encoder>
-    </appender>
-
-    <root level="debug">
-        <appender-ref ref="STDOUT" />
-    </root>
-</configuration>
\ No newline at end of file
diff --git a/store/src/test/resources/logback-test.xml b/srvutil/src/test/resources/rmq.logback-test.xml
similarity index 64%
copy from store/src/test/resources/logback-test.xml
copy to srvutil/src/test/resources/rmq.logback-test.xml
index a033816..c3ec0d1 100644
--- a/store/src/test/resources/logback-test.xml
+++ b/srvutil/src/test/resources/rmq.logback-test.xml
@@ -17,19 +17,20 @@
   -->
 <configuration>
 
-    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
-        <encoder>
-            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n</pattern>
-            <charset class="java.nio.charset.Charset">UTF-8</charset>
-        </encoder>
+    <appender name="CONSOLE" class="org.apache.rocketmq.shade.ch.qos.logback.core.ConsoleAppender">
+        <layout class="org.apache.rocketmq.shade.ch.qos.logback.classic.PatternLayout">
+            <Pattern>
+                %d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n
+            </Pattern>
+        </layout>
     </appender>
 
-    <logger name="org.apache.rocketmq.store" level="WARN" additivity="false">
-        <appender-ref ref="STDOUT"/>
+    <logger name="org.apache.rocketmq" level="error" additivity="false">
+        <appender-ref ref="CONSOLE"/>
     </logger>
 
-    <root level="OFF">
-        <appender-ref ref="STDOUT"/>
+    <root level="error">
+        <appender-ref ref="CONSOLE"/>
     </root>
 
-</configuration>
+</configuration>
\ No newline at end of file
diff --git a/store/BUILD.bazel b/store/BUILD.bazel
index c4297b2..ed3496f 100644
--- a/store/BUILD.bazel
+++ b/store/BUILD.bazel
@@ -22,7 +22,6 @@
     visibility = ["//visibility:public"],
     deps = [
         "//common",
-        "//logging",
         "//remoting",
         "@maven//:com_alibaba_fastjson",
         "@maven//:com_conversantmedia_disruptor",
@@ -39,6 +38,7 @@
         "@maven//:io_opentelemetry_opentelemetry_sdk_metrics",
         "@maven//:net_java_dev_jna_jna",
         "@maven//:org_apache_commons_commons_lang3",
+        "@maven//:io_github_aliyun_mq_rocketmq_slf4j_api",
     ],
 )
 
@@ -51,12 +51,12 @@
         ":store",
         "//:test_deps",
         "//common",
-        "//logging",
-        "//remoting",
+        "//remoting",        
         "@maven//:com_conversantmedia_disruptor",
         "@maven//:io_openmessaging_storage_dledger",
         "@maven//:org_apache_commons_commons_lang3",
         "@maven//:com_google_guava_guava",
+        "@maven//:io_github_aliyun_mq_rocketmq_slf4j_api",
     ],
 )
 
diff --git a/store/pom.xml b/store/pom.xml
index 34abdf7..21e1730 100644
--- a/store/pom.xml
+++ b/store/pom.xml
@@ -45,17 +45,13 @@
         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>rocketmq-remoting</artifactId>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>net.java.dev.jna</groupId>
             <artifactId>jna</artifactId>
         </dependency>
         <dependency>
-            <groupId>ch.qos.logback</groupId>
-            <artifactId>logback-classic</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
             <groupId>com.conversantmedia</groupId>
             <artifactId>disruptor</artifactId>
         </dependency>
@@ -63,5 +59,12 @@
             <groupId>com.google.guava</groupId>
             <artifactId>guava</artifactId>
         </dependency>
+
+        <!-- Required by DLedger -->
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
 </project>
diff --git a/store/src/main/java/org/apache/rocketmq/store/AllocateMappedFileService.java b/store/src/main/java/org/apache/rocketmq/store/AllocateMappedFileService.java
index 9499999..f5727dd 100644
--- a/store/src/main/java/org/apache/rocketmq/store/AllocateMappedFileService.java
+++ b/store/src/main/java/org/apache/rocketmq/store/AllocateMappedFileService.java
@@ -27,8 +27,8 @@
 import org.apache.rocketmq.common.ServiceThread;
 import org.apache.rocketmq.common.UtilAll;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.store.config.BrokerRole;
 import org.apache.rocketmq.store.logfile.DefaultMappedFile;
 import org.apache.rocketmq.store.logfile.MappedFile;
@@ -37,7 +37,7 @@
  * Create MappedFile in advance
  */
 public class AllocateMappedFileService extends ServiceThread {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
     private static int waitTimeOut = 1000 * 5;
     private ConcurrentMap<String, AllocateRequest> requestTable =
         new ConcurrentHashMap<>();
diff --git a/store/src/main/java/org/apache/rocketmq/store/CommitLog.java b/store/src/main/java/org/apache/rocketmq/store/CommitLog.java
index 6d2e986..5922f17 100644
--- a/store/src/main/java/org/apache/rocketmq/store/CommitLog.java
+++ b/store/src/main/java/org/apache/rocketmq/store/CommitLog.java
@@ -45,8 +45,8 @@
 import org.apache.rocketmq.common.sysflag.MessageSysFlag;
 import org.apache.rocketmq.common.topic.TopicValidator;
 import org.apache.rocketmq.common.utils.QueueTypeUtils;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.store.MessageExtEncoder.PutMessageThreadLocal;
 import org.apache.rocketmq.store.config.BrokerRole;
 import org.apache.rocketmq.store.config.FlushDiskType;
@@ -60,7 +60,7 @@
 public class CommitLog implements Swappable {
     // Message's MAGIC CODE daa320a7
     public final static int MESSAGE_MAGIC_CODE = -626843481;
-    protected static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
+    protected static final Logger log = LoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
     // End of file empty MAGIC CODE cbd43194
     public final static int BLANK_MAGIC_CODE = -875286124;
     protected final MappedFileQueue mappedFileQueue;
diff --git a/store/src/main/java/org/apache/rocketmq/store/ConsumeQueue.java b/store/src/main/java/org/apache/rocketmq/store/ConsumeQueue.java
index 59231dc..76e8ef7 100644
--- a/store/src/main/java/org/apache/rocketmq/store/ConsumeQueue.java
+++ b/store/src/main/java/org/apache/rocketmq/store/ConsumeQueue.java
@@ -29,8 +29,8 @@
 import org.apache.rocketmq.common.message.MessageConst;
 import org.apache.rocketmq.common.message.MessageDecoder;
 import org.apache.rocketmq.common.message.MessageExtBrokerInner;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.store.config.BrokerRole;
 import org.apache.rocketmq.store.config.StorePathConfigHelper;
 import org.apache.rocketmq.store.logfile.MappedFile;
@@ -42,10 +42,10 @@
 import org.apache.rocketmq.store.queue.ReferredIterator;
 
 public class ConsumeQueue implements ConsumeQueueInterface, FileQueueLifeCycle {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
 
     public static final int CQ_STORE_UNIT_SIZE = 20;
-    private static final InternalLogger LOG_ERROR = InternalLoggerFactory.getLogger(LoggerName.STORE_ERROR_LOGGER_NAME);
+    private static final Logger LOG_ERROR = LoggerFactory.getLogger(LoggerName.STORE_ERROR_LOGGER_NAME);
 
     private final MessageStore messageStore;
 
diff --git a/store/src/main/java/org/apache/rocketmq/store/ConsumeQueueExt.java b/store/src/main/java/org/apache/rocketmq/store/ConsumeQueueExt.java
index e39b51e..2394c5b 100644
--- a/store/src/main/java/org/apache/rocketmq/store/ConsumeQueueExt.java
+++ b/store/src/main/java/org/apache/rocketmq/store/ConsumeQueueExt.java
@@ -18,8 +18,8 @@
 package org.apache.rocketmq.store;
 
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 import java.io.File;
 import java.nio.ByteBuffer;
@@ -38,7 +38,7 @@
  * <li>4. Pls keep this file small.</li>
  */
 public class ConsumeQueueExt {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
 
     private final MappedFileQueue mappedFileQueue;
     private final String topic;
diff --git a/store/src/main/java/org/apache/rocketmq/store/DefaultMessageStore.java b/store/src/main/java/org/apache/rocketmq/store/DefaultMessageStore.java
index 89faaae..588fefd 100644
--- a/store/src/main/java/org/apache/rocketmq/store/DefaultMessageStore.java
+++ b/store/src/main/java/org/apache/rocketmq/store/DefaultMessageStore.java
@@ -71,8 +71,8 @@
 import org.apache.rocketmq.common.utils.CleanupPolicyUtils;
 import org.apache.rocketmq.common.utils.QueueTypeUtils;
 import org.apache.rocketmq.common.utils.ServiceProvider;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.protocol.body.HARuntimeInfo;
 import org.apache.rocketmq.store.config.BrokerRole;
 import org.apache.rocketmq.store.config.FlushDiskType;
@@ -99,7 +99,7 @@
 import org.apache.rocketmq.store.util.PerfCounter;
 
 public class DefaultMessageStore implements MessageStore {
-    private static final InternalLogger LOGGER = InternalLoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
+    private static final Logger LOGGER = LoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
 
     public final PerfCounter.Ticks perfs = new PerfCounter.Ticks(LOGGER);
 
diff --git a/store/src/main/java/org/apache/rocketmq/store/FlushDiskWatcher.java b/store/src/main/java/org/apache/rocketmq/store/FlushDiskWatcher.java
index 980a496..fa2394d 100644
--- a/store/src/main/java/org/apache/rocketmq/store/FlushDiskWatcher.java
+++ b/store/src/main/java/org/apache/rocketmq/store/FlushDiskWatcher.java
@@ -21,12 +21,12 @@
 
 import org.apache.rocketmq.common.ServiceThread;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.store.CommitLog.GroupCommitRequest;
 
 public class FlushDiskWatcher extends ServiceThread {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
     private final LinkedBlockingQueue<GroupCommitRequest> commitRequests = new LinkedBlockingQueue<>();
 
     @Override
diff --git a/store/src/main/java/org/apache/rocketmq/store/MappedFileQueue.java b/store/src/main/java/org/apache/rocketmq/store/MappedFileQueue.java
index ff5705a..24c350f 100644
--- a/store/src/main/java/org/apache/rocketmq/store/MappedFileQueue.java
+++ b/store/src/main/java/org/apache/rocketmq/store/MappedFileQueue.java
@@ -31,14 +31,14 @@
 import org.apache.rocketmq.common.MixAll;
 import org.apache.rocketmq.common.UtilAll;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.store.logfile.DefaultMappedFile;
 import org.apache.rocketmq.store.logfile.MappedFile;
 
 public class MappedFileQueue implements Swappable {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
-    private static final InternalLogger LOG_ERROR = InternalLoggerFactory.getLogger(LoggerName.STORE_ERROR_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
+    private static final Logger LOG_ERROR = LoggerFactory.getLogger(LoggerName.STORE_ERROR_LOGGER_NAME);
 
     protected final String storePath;
 
diff --git a/store/src/main/java/org/apache/rocketmq/store/MessageExtEncoder.java b/store/src/main/java/org/apache/rocketmq/store/MessageExtEncoder.java
index 4af220f..0410787 100644
--- a/store/src/main/java/org/apache/rocketmq/store/MessageExtEncoder.java
+++ b/store/src/main/java/org/apache/rocketmq/store/MessageExtEncoder.java
@@ -25,13 +25,13 @@
 import org.apache.rocketmq.common.message.MessageExtBatch;
 import org.apache.rocketmq.common.message.MessageExtBrokerInner;
 import org.apache.rocketmq.common.sysflag.MessageSysFlag;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 import java.nio.ByteBuffer;
 
 public class MessageExtEncoder {
-    protected static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
+    protected static final Logger log = LoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
     private ByteBuf byteBuf;
     // The maximum length of the message body.
     private int maxMessageBodySize;
diff --git a/store/src/main/java/org/apache/rocketmq/store/StoreCheckpoint.java b/store/src/main/java/org/apache/rocketmq/store/StoreCheckpoint.java
index 07e4b79..4123907 100644
--- a/store/src/main/java/org/apache/rocketmq/store/StoreCheckpoint.java
+++ b/store/src/main/java/org/apache/rocketmq/store/StoreCheckpoint.java
@@ -24,12 +24,12 @@
 import java.nio.channels.FileChannel.MapMode;
 import org.apache.rocketmq.common.UtilAll;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.store.logfile.DefaultMappedFile;
 
 public class StoreCheckpoint {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
     private final RandomAccessFile randomAccessFile;
     private final FileChannel fileChannel;
     private final MappedByteBuffer mappedByteBuffer;
diff --git a/store/src/main/java/org/apache/rocketmq/store/StoreStatsService.java b/store/src/main/java/org/apache/rocketmq/store/StoreStatsService.java
index ebceac5..70e0d7e 100644
--- a/store/src/main/java/org/apache/rocketmq/store/StoreStatsService.java
+++ b/store/src/main/java/org/apache/rocketmq/store/StoreStatsService.java
@@ -31,11 +31,11 @@
 import org.apache.rocketmq.common.BrokerIdentity;
 import org.apache.rocketmq.common.ServiceThread;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 public class StoreStatsService extends ServiceThread {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
 
     private static final int FREQUENCY_OF_SAMPLING = 1000;
 
diff --git a/store/src/main/java/org/apache/rocketmq/store/StoreUtil.java b/store/src/main/java/org/apache/rocketmq/store/StoreUtil.java
index e910c2a..5251f6b 100644
--- a/store/src/main/java/org/apache/rocketmq/store/StoreUtil.java
+++ b/store/src/main/java/org/apache/rocketmq/store/StoreUtil.java
@@ -18,8 +18,8 @@
 
 import com.google.common.base.Preconditions;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.store.logfile.MappedFile;
 
 import java.lang.management.ManagementFactory;
@@ -29,7 +29,7 @@
 import static java.lang.String.format;
 
 public class StoreUtil {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
 
     public static final long TOTAL_PHYSICAL_MEMORY_SIZE = getTotalPhysicalMemorySize();
 
diff --git a/store/src/main/java/org/apache/rocketmq/store/TransientStorePool.java b/store/src/main/java/org/apache/rocketmq/store/TransientStorePool.java
index f692a99..ce2d972 100644
--- a/store/src/main/java/org/apache/rocketmq/store/TransientStorePool.java
+++ b/store/src/main/java/org/apache/rocketmq/store/TransientStorePool.java
@@ -22,14 +22,14 @@
 import java.util.Deque;
 import java.util.concurrent.ConcurrentLinkedDeque;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.store.config.MessageStoreConfig;
 import org.apache.rocketmq.store.util.LibC;
 import sun.nio.ch.DirectBuffer;
 
 public class TransientStorePool {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
 
     private final int poolSize;
     private final int fileSize;
diff --git a/store/src/main/java/org/apache/rocketmq/store/ha/DefaultHAClient.java b/store/src/main/java/org/apache/rocketmq/store/ha/DefaultHAClient.java
index d860d74..6f09643 100644
--- a/store/src/main/java/org/apache/rocketmq/store/ha/DefaultHAClient.java
+++ b/store/src/main/java/org/apache/rocketmq/store/ha/DefaultHAClient.java
@@ -28,14 +28,14 @@
 import org.apache.rocketmq.common.ServiceThread;
 import org.apache.rocketmq.common.constant.LoggerName;
 import org.apache.rocketmq.common.utils.NetworkUtil;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.common.RemotingHelper;
 import org.apache.rocketmq.store.DefaultMessageStore;
 
 public class DefaultHAClient extends ServiceThread implements HAClient {
 
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
     private static final int READ_MAX_BUFFER_SIZE = 1024 * 1024 * 4;
     private final AtomicReference<String> masterHaAddress = new AtomicReference<>();
     private final AtomicReference<String> masterAddress = new AtomicReference<>();
diff --git a/store/src/main/java/org/apache/rocketmq/store/ha/DefaultHAConnection.java b/store/src/main/java/org/apache/rocketmq/store/ha/DefaultHAConnection.java
index 2ff8e8d..e8fe28f 100644
--- a/store/src/main/java/org/apache/rocketmq/store/ha/DefaultHAConnection.java
+++ b/store/src/main/java/org/apache/rocketmq/store/ha/DefaultHAConnection.java
@@ -25,13 +25,13 @@
 import org.apache.rocketmq.common.ServiceThread;
 import org.apache.rocketmq.common.constant.LoggerName;
 import org.apache.rocketmq.common.utils.NetworkUtil;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.netty.NettySystemConfig;
 import org.apache.rocketmq.store.SelectMappedBufferResult;
 
 public class DefaultHAConnection implements HAConnection {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
     private final DefaultHAService haService;
     private final SocketChannel socketChannel;
     private final String clientAddress;
diff --git a/store/src/main/java/org/apache/rocketmq/store/ha/DefaultHAService.java b/store/src/main/java/org/apache/rocketmq/store/ha/DefaultHAService.java
index 7dacbde..53fe143 100644
--- a/store/src/main/java/org/apache/rocketmq/store/ha/DefaultHAService.java
+++ b/store/src/main/java/org/apache/rocketmq/store/ha/DefaultHAService.java
@@ -32,8 +32,8 @@
 import org.apache.rocketmq.common.ServiceThread;
 import org.apache.rocketmq.common.constant.LoggerName;
 import org.apache.rocketmq.common.utils.NetworkUtil;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.protocol.body.HARuntimeInfo;
 import org.apache.rocketmq.store.CommitLog;
 import org.apache.rocketmq.store.DefaultMessageStore;
@@ -42,7 +42,7 @@
 
 public class DefaultHAService implements HAService {
 
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
 
     protected final AtomicInteger connectionCount = new AtomicInteger(0);
 
diff --git a/store/src/main/java/org/apache/rocketmq/store/ha/GroupTransferService.java b/store/src/main/java/org/apache/rocketmq/store/ha/GroupTransferService.java
index 181d4df..cf8871b 100644
--- a/store/src/main/java/org/apache/rocketmq/store/ha/GroupTransferService.java
+++ b/store/src/main/java/org/apache/rocketmq/store/ha/GroupTransferService.java
@@ -23,8 +23,8 @@
 import org.apache.rocketmq.common.MixAll;
 import org.apache.rocketmq.common.ServiceThread;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.store.CommitLog;
 import org.apache.rocketmq.store.DefaultMessageStore;
 import org.apache.rocketmq.store.PutMessageSpinLock;
@@ -37,7 +37,7 @@
  */
 public class GroupTransferService extends ServiceThread {
 
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
 
     private final WaitNotifyObject notifyTransferObject = new WaitNotifyObject();
     private final PutMessageSpinLock lock = new PutMessageSpinLock();
diff --git a/store/src/main/java/org/apache/rocketmq/store/ha/HAConnectionStateNotificationService.java b/store/src/main/java/org/apache/rocketmq/store/ha/HAConnectionStateNotificationService.java
index f4e08cc..f0cf22a 100644
--- a/store/src/main/java/org/apache/rocketmq/store/ha/HAConnectionStateNotificationService.java
+++ b/store/src/main/java/org/apache/rocketmq/store/ha/HAConnectionStateNotificationService.java
@@ -20,8 +20,8 @@
 import java.net.InetSocketAddress;
 import org.apache.rocketmq.common.ServiceThread;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.store.DefaultMessageStore;
 import org.apache.rocketmq.store.config.BrokerRole;
 
@@ -30,7 +30,7 @@
  */
 public class HAConnectionStateNotificationService extends ServiceThread {
 
-    private static final InternalLogger LOGGER = InternalLoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
+    private static final Logger LOGGER = LoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
 
     private static final long CONNECTION_ESTABLISH_TIMEOUT = 10 * 1000;
 
diff --git a/store/src/main/java/org/apache/rocketmq/store/ha/WaitNotifyObject.java b/store/src/main/java/org/apache/rocketmq/store/ha/WaitNotifyObject.java
index bff17f0..fe8f8a5 100644
--- a/store/src/main/java/org/apache/rocketmq/store/ha/WaitNotifyObject.java
+++ b/store/src/main/java/org/apache/rocketmq/store/ha/WaitNotifyObject.java
@@ -18,15 +18,15 @@
 
 import org.apache.rocketmq.common.constant.LoggerName;
 import org.apache.rocketmq.common.utils.ConcurrentHashMapUtils;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.atomic.AtomicBoolean;
 
 public class WaitNotifyObject {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
 
     protected final ConcurrentHashMap<Long/* thread id */, AtomicBoolean/* notified */> waitingThreadTable =
         new ConcurrentHashMap<>(16);
diff --git a/store/src/main/java/org/apache/rocketmq/store/ha/autoswitch/AutoSwitchHAClient.java b/store/src/main/java/org/apache/rocketmq/store/ha/autoswitch/AutoSwitchHAClient.java
index 7461279..200e289 100644
--- a/store/src/main/java/org/apache/rocketmq/store/ha/autoswitch/AutoSwitchHAClient.java
+++ b/store/src/main/java/org/apache/rocketmq/store/ha/autoswitch/AutoSwitchHAClient.java
@@ -31,8 +31,8 @@
 import org.apache.rocketmq.common.ServiceThread;
 import org.apache.rocketmq.common.constant.LoggerName;
 import org.apache.rocketmq.common.utils.NetworkUtil;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.common.RemotingHelper;
 import org.apache.rocketmq.remoting.protocol.EpochEntry;
 import org.apache.rocketmq.store.DefaultMessageStore;
@@ -60,7 +60,7 @@
      */
     public static final int TRANSFER_HEADER_SIZE = 4 + 8;
     public static final int MIN_HEADER_SIZE = Math.min(HANDSHAKE_HEADER_SIZE, TRANSFER_HEADER_SIZE);
-    private static final InternalLogger LOGGER = InternalLoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
+    private static final Logger LOGGER = LoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
     private static final int READ_MAX_BUFFER_SIZE = 1024 * 1024 * 4;
     private final AtomicReference<String> masterHaAddress = new AtomicReference<>();
     private final AtomicReference<String> masterAddress = new AtomicReference<>();
diff --git a/store/src/main/java/org/apache/rocketmq/store/ha/autoswitch/AutoSwitchHAConnection.java b/store/src/main/java/org/apache/rocketmq/store/ha/autoswitch/AutoSwitchHAConnection.java
index de20625..659551f 100644
--- a/store/src/main/java/org/apache/rocketmq/store/ha/autoswitch/AutoSwitchHAConnection.java
+++ b/store/src/main/java/org/apache/rocketmq/store/ha/autoswitch/AutoSwitchHAConnection.java
@@ -27,8 +27,8 @@
 import org.apache.rocketmq.common.ServiceThread;
 import org.apache.rocketmq.common.constant.LoggerName;
 import org.apache.rocketmq.common.utils.NetworkUtil;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.netty.NettySystemConfig;
 import org.apache.rocketmq.remoting.protocol.EpochEntry;
 import org.apache.rocketmq.store.SelectMappedBufferResult;
@@ -47,7 +47,7 @@
      */
     public static final int MSG_HEADER_SIZE = 4 + 4 + 8 + 4 + 8 + 8;
     public static final int EPOCH_ENTRY_SIZE = 12;
-    private static final InternalLogger LOGGER = InternalLoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
+    private static final Logger LOGGER = LoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
     private final AutoSwitchHAService haService;
     private final SocketChannel socketChannel;
     private final String clientAddress;
diff --git a/store/src/main/java/org/apache/rocketmq/store/ha/autoswitch/AutoSwitchHAService.java b/store/src/main/java/org/apache/rocketmq/store/ha/autoswitch/AutoSwitchHAService.java
index dd95879..55ef719 100644
--- a/store/src/main/java/org/apache/rocketmq/store/ha/autoswitch/AutoSwitchHAService.java
+++ b/store/src/main/java/org/apache/rocketmq/store/ha/autoswitch/AutoSwitchHAService.java
@@ -32,8 +32,8 @@
 import org.apache.rocketmq.common.ThreadFactoryImpl;
 import org.apache.rocketmq.common.constant.LoggerName;
 import org.apache.rocketmq.common.utils.ConcurrentHashMapUtils;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.protocol.EpochEntry;
 import org.apache.rocketmq.remoting.protocol.body.HARuntimeInfo;
 import org.apache.rocketmq.store.DefaultMessageStore;
@@ -51,7 +51,7 @@
  * SwitchAble ha service, support switch role to master or slave.
  */
 public class AutoSwitchHAService extends DefaultHAService {
-    private static final InternalLogger LOGGER = InternalLoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
+    private static final Logger LOGGER = LoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
     private final ExecutorService executorService = Executors.newSingleThreadExecutor(new ThreadFactoryImpl("AutoSwitchHAService_Executor_"));
     private final List<Consumer<Set<String>>> syncStateSetChangedListeners = new ArrayList<>();
     private final CopyOnWriteArraySet<String> syncStateSet = new CopyOnWriteArraySet<>();
diff --git a/store/src/main/java/org/apache/rocketmq/store/ha/autoswitch/EpochFileCache.java b/store/src/main/java/org/apache/rocketmq/store/ha/autoswitch/EpochFileCache.java
index 468b17e..25c6895 100644
--- a/store/src/main/java/org/apache/rocketmq/store/ha/autoswitch/EpochFileCache.java
+++ b/store/src/main/java/org/apache/rocketmq/store/ha/autoswitch/EpochFileCache.java
@@ -29,15 +29,15 @@
 import java.util.function.Predicate;
 import org.apache.rocketmq.common.constant.LoggerName;
 import org.apache.rocketmq.common.utils.CheckpointFile;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.protocol.EpochEntry;
 
 /**
  * Cache for epochFile. Mapping (Epoch -> StartOffset)
  */
 public class EpochFileCache {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
     private final ReadWriteLock readWriteLock = new ReentrantReadWriteLock();
     private final Lock readLock = this.readWriteLock.readLock();
     private final Lock writeLock = this.readWriteLock.writeLock();
diff --git a/store/src/main/java/org/apache/rocketmq/store/ha/io/AbstractHAReader.java b/store/src/main/java/org/apache/rocketmq/store/ha/io/AbstractHAReader.java
index 1052950..d30ce32 100644
--- a/store/src/main/java/org/apache/rocketmq/store/ha/io/AbstractHAReader.java
+++ b/store/src/main/java/org/apache/rocketmq/store/ha/io/AbstractHAReader.java
@@ -23,11 +23,11 @@
 import java.util.ArrayList;
 import java.util.List;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 public abstract class AbstractHAReader {
-    private static final InternalLogger LOGGER = InternalLoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
+    private static final Logger LOGGER = LoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
     protected final List<HAReadHook> readHookList = new ArrayList<>();
 
     public boolean read(SocketChannel socketChannel, ByteBuffer byteBufferRead) {
diff --git a/store/src/main/java/org/apache/rocketmq/store/ha/io/HAWriter.java b/store/src/main/java/org/apache/rocketmq/store/ha/io/HAWriter.java
index 4835ca8..5267719 100644
--- a/store/src/main/java/org/apache/rocketmq/store/ha/io/HAWriter.java
+++ b/store/src/main/java/org/apache/rocketmq/store/ha/io/HAWriter.java
@@ -23,11 +23,11 @@
 import java.util.ArrayList;
 import java.util.List;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 public class HAWriter {
-    private static final InternalLogger LOGGER = InternalLoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
+    private static final Logger LOGGER = LoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
     protected final List<HAWriteHook> writeHookList = new ArrayList<>();
 
     public boolean write(SocketChannel socketChannel, ByteBuffer byteBufferWrite) throws IOException {
diff --git a/store/src/main/java/org/apache/rocketmq/store/index/IndexFile.java b/store/src/main/java/org/apache/rocketmq/store/index/IndexFile.java
index ac675a5..9ee9709 100644
--- a/store/src/main/java/org/apache/rocketmq/store/index/IndexFile.java
+++ b/store/src/main/java/org/apache/rocketmq/store/index/IndexFile.java
@@ -22,13 +22,13 @@
 import java.util.List;
 import org.apache.rocketmq.common.UtilAll;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.store.logfile.DefaultMappedFile;
 import org.apache.rocketmq.store.logfile.MappedFile;
 
 public class IndexFile {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
     private static int hashSlotSize = 4;
     private static int indexSize = 20;
     private static int invalidIndex = 0;
diff --git a/store/src/main/java/org/apache/rocketmq/store/index/IndexService.java b/store/src/main/java/org/apache/rocketmq/store/index/IndexService.java
index 99b5535..aa098a0 100644
--- a/store/src/main/java/org/apache/rocketmq/store/index/IndexService.java
+++ b/store/src/main/java/org/apache/rocketmq/store/index/IndexService.java
@@ -26,8 +26,8 @@
 import org.apache.rocketmq.common.AbstractBrokerRunnable;
 import org.apache.rocketmq.common.UtilAll;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.common.message.MessageConst;
 import org.apache.rocketmq.common.sysflag.MessageSysFlag;
 import org.apache.rocketmq.store.DefaultMessageStore;
@@ -35,7 +35,7 @@
 import org.apache.rocketmq.store.config.StorePathConfigHelper;
 
 public class IndexService {
-    private static final InternalLogger LOGGER = InternalLoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
+    private static final Logger LOGGER = LoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
     /**
      * Maximum times to attempt index file creation.
      */
diff --git a/store/src/main/java/org/apache/rocketmq/store/kv/CompactionLog.java b/store/src/main/java/org/apache/rocketmq/store/kv/CompactionLog.java
index e826288..2ef52ba 100644
--- a/store/src/main/java/org/apache/rocketmq/store/kv/CompactionLog.java
+++ b/store/src/main/java/org/apache/rocketmq/store/kv/CompactionLog.java
@@ -23,8 +23,8 @@
 import org.apache.rocketmq.common.constant.LoggerName;
 import org.apache.rocketmq.common.message.MessageDecoder;
 import org.apache.rocketmq.common.message.MessageExt;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.store.AppendMessageResult;
 import org.apache.rocketmq.store.AppendMessageStatus;
 import org.apache.rocketmq.store.CompactionAppendMsgCallback;
@@ -68,7 +68,7 @@
 import static org.apache.rocketmq.common.message.MessageDecoder.BLANK_MAGIC_CODE;
 
 public class CompactionLog {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
 
     private static final int END_FILE_MIN_BLANK_LENGTH = 4 + 4;
     private static final int MAX_PULL_MSG_SIZE = 128 * 1024 * 1024;
diff --git a/store/src/main/java/org/apache/rocketmq/store/kv/CompactionService.java b/store/src/main/java/org/apache/rocketmq/store/kv/CompactionService.java
index 32319a8..d8e796d 100644
--- a/store/src/main/java/org/apache/rocketmq/store/kv/CompactionService.java
+++ b/store/src/main/java/org/apache/rocketmq/store/kv/CompactionService.java
@@ -21,8 +21,8 @@
 import org.apache.rocketmq.common.attribute.CleanupPolicy;
 import org.apache.rocketmq.common.constant.LoggerName;
 import org.apache.rocketmq.common.utils.CleanupPolicyUtils;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.store.CommitLog;
 import org.apache.rocketmq.store.DefaultMessageStore;
 import org.apache.rocketmq.store.DispatchRequest;
@@ -35,7 +35,7 @@
 import java.util.concurrent.TimeUnit;
 
 public class CompactionService extends ServiceThread {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
 
     private final CompactionStore compactionStore;
     private final DefaultMessageStore defaultMessageStore;
diff --git a/store/src/main/java/org/apache/rocketmq/store/kv/CompactionStore.java b/store/src/main/java/org/apache/rocketmq/store/kv/CompactionStore.java
index 9e69505..84d76c3 100644
--- a/store/src/main/java/org/apache/rocketmq/store/kv/CompactionStore.java
+++ b/store/src/main/java/org/apache/rocketmq/store/kv/CompactionStore.java
@@ -18,8 +18,8 @@
 
 import org.apache.rocketmq.common.ThreadFactoryImpl;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.store.GetMessageResult;
 import org.apache.rocketmq.store.MessageStore;
 import org.apache.rocketmq.store.SelectMappedBufferResult;
@@ -53,7 +53,7 @@
     private final int offsetMapSize;
     private String masterAddr;
 
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
 
     public CompactionStore(MessageStore defaultMessageStore) {
         this.defaultMessageStore = defaultMessageStore;
diff --git a/store/src/main/java/org/apache/rocketmq/store/kv/MessageFetcher.java b/store/src/main/java/org/apache/rocketmq/store/kv/MessageFetcher.java
index ce31440..004873d 100644
--- a/store/src/main/java/org/apache/rocketmq/store/kv/MessageFetcher.java
+++ b/store/src/main/java/org/apache/rocketmq/store/kv/MessageFetcher.java
@@ -25,8 +25,8 @@
 import org.apache.rocketmq.common.consumer.ConsumeFromWhere;
 import org.apache.rocketmq.common.sysflag.PullSysFlag;
 import org.apache.rocketmq.common.utils.NetworkUtil;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.RemotingClient;
 import org.apache.rocketmq.remoting.exception.RemotingCommandException;
 import org.apache.rocketmq.remoting.exception.RemotingConnectException;
@@ -49,7 +49,7 @@
 
 public class MessageFetcher implements AutoCloseable {
 
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
     private final RemotingClient client;
     public MessageFetcher() {
         NettyClientConfig nettyClientConfig = new NettyClientConfig();
diff --git a/store/src/main/java/org/apache/rocketmq/store/logfile/DefaultMappedFile.java b/store/src/main/java/org/apache/rocketmq/store/logfile/DefaultMappedFile.java
index 62c16e9..7d53756 100644
--- a/store/src/main/java/org/apache/rocketmq/store/logfile/DefaultMappedFile.java
+++ b/store/src/main/java/org/apache/rocketmq/store/logfile/DefaultMappedFile.java
@@ -41,8 +41,8 @@
 import org.apache.rocketmq.common.message.MessageExtBatch;
 import org.apache.rocketmq.common.message.MessageExtBrokerInner;
 import org.apache.rocketmq.common.utils.NetworkUtil;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.store.AppendMessageCallback;
 import org.apache.rocketmq.store.AppendMessageResult;
 import org.apache.rocketmq.store.AppendMessageStatus;
@@ -56,7 +56,7 @@
 
 public class DefaultMappedFile extends AbstractMappedFile {
     public static final int OS_PAGE_SIZE = 1024 * 4;
-    protected static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
+    protected static final Logger log = LoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
 
     protected static final AtomicLong TOTAL_MAPPED_VIRTUAL_MEMORY = new AtomicLong(0);
 
diff --git a/store/src/main/java/org/apache/rocketmq/store/queue/BatchConsumeQueue.java b/store/src/main/java/org/apache/rocketmq/store/queue/BatchConsumeQueue.java
index b6ee399..30d0d31 100644
--- a/store/src/main/java/org/apache/rocketmq/store/queue/BatchConsumeQueue.java
+++ b/store/src/main/java/org/apache/rocketmq/store/queue/BatchConsumeQueue.java
@@ -24,8 +24,8 @@
 import org.apache.rocketmq.common.message.MessageConst;
 import org.apache.rocketmq.common.message.MessageDecoder;
 import org.apache.rocketmq.common.sysflag.MessageSysFlag;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.store.DispatchRequest;
 import org.apache.rocketmq.store.MappedFileQueue;
 import org.apache.rocketmq.common.message.MessageExtBrokerInner;
@@ -42,7 +42,7 @@
 import java.util.function.Function;
 
 public class BatchConsumeQueue implements ConsumeQueueInterface, FileQueueLifeCycle {
-    protected static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
+    protected static final Logger log = LoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
 
     //position 8, size 4, tagscode 8, storetime 8, msgBaseOffset 8, batchSize 2, compactedOffset 4, reserved 4
     public static final int CQ_STORE_UNIT_SIZE = 46;
diff --git a/store/src/main/java/org/apache/rocketmq/store/queue/ConsumeQueueStore.java b/store/src/main/java/org/apache/rocketmq/store/queue/ConsumeQueueStore.java
index 73c318b..5b5766e 100644
--- a/store/src/main/java/org/apache/rocketmq/store/queue/ConsumeQueueStore.java
+++ b/store/src/main/java/org/apache/rocketmq/store/queue/ConsumeQueueStore.java
@@ -34,8 +34,8 @@
 import org.apache.rocketmq.common.message.MessageExt;
 import org.apache.rocketmq.common.topic.TopicValidator;
 import org.apache.rocketmq.common.utils.QueueTypeUtils;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.store.CommitLog;
 import org.apache.rocketmq.store.ConsumeQueue;
 import org.apache.rocketmq.store.DefaultMessageStore;
@@ -57,7 +57,7 @@
 import static org.apache.rocketmq.store.config.StorePathConfigHelper.getStorePathConsumeQueue;
 
 public class ConsumeQueueStore {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
 
     protected final DefaultMessageStore messageStore;
     protected final MessageStoreConfig messageStoreConfig;
diff --git a/store/src/main/java/org/apache/rocketmq/store/queue/QueueOffsetAssigner.java b/store/src/main/java/org/apache/rocketmq/store/queue/QueueOffsetAssigner.java
index 5e87bbc..4026c41 100644
--- a/store/src/main/java/org/apache/rocketmq/store/queue/QueueOffsetAssigner.java
+++ b/store/src/main/java/org/apache/rocketmq/store/queue/QueueOffsetAssigner.java
@@ -21,14 +21,14 @@
 import java.util.concurrent.ConcurrentMap;
 import org.apache.rocketmq.common.constant.LoggerName;
 import org.apache.rocketmq.common.utils.ConcurrentHashMapUtils;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 /**
  * QueueOffsetAssigner is a component for assigning offsets for queues.
  */
 public class QueueOffsetAssigner {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
 
     private ConcurrentMap<String, Long> topicQueueTable = new ConcurrentHashMap<>(1024);
     private ConcurrentMap<String, Long> batchTopicQueueTable = new ConcurrentHashMap<>(1024);
diff --git a/store/src/main/java/org/apache/rocketmq/store/stats/BrokerStats.java b/store/src/main/java/org/apache/rocketmq/store/stats/BrokerStats.java
index 812247a..f7ed678 100644
--- a/store/src/main/java/org/apache/rocketmq/store/stats/BrokerStats.java
+++ b/store/src/main/java/org/apache/rocketmq/store/stats/BrokerStats.java
@@ -17,12 +17,12 @@
 package org.apache.rocketmq.store.stats;
 
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.store.MessageStore;
 
 public class BrokerStats {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
 
     private final MessageStore defaultMessageStore;
 
diff --git a/store/src/main/java/org/apache/rocketmq/store/stats/BrokerStatsManager.java b/store/src/main/java/org/apache/rocketmq/store/stats/BrokerStatsManager.java
index 7ceb005..a2c8b9b 100644
--- a/store/src/main/java/org/apache/rocketmq/store/stats/BrokerStatsManager.java
+++ b/store/src/main/java/org/apache/rocketmq/store/stats/BrokerStatsManager.java
@@ -33,8 +33,8 @@
 import org.apache.rocketmq.common.statistics.StatisticsKindMeta;
 import org.apache.rocketmq.common.statistics.StatisticsManager;
 import org.apache.rocketmq.common.stats.Stats;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.common.stats.MomentStatsItemSet;
 import org.apache.rocketmq.common.stats.StatsItem;
 import org.apache.rocketmq.common.stats.StatsItemSet;
@@ -123,11 +123,11 @@
     /**
      * read disk follow stats
      */
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.ROCKETMQ_STATS_LOGGER_NAME);
-    private static final InternalLogger COMMERCIAL_LOG = InternalLoggerFactory.getLogger(
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.ROCKETMQ_STATS_LOGGER_NAME);
+    private static final Logger COMMERCIAL_LOG = LoggerFactory.getLogger(
         LoggerName.COMMERCIAL_LOGGER_NAME);
-    private static final InternalLogger ACCOUNT_LOG = InternalLoggerFactory.getLogger(LoggerName.ACCOUNT_LOGGER_NAME);
-    private static final InternalLogger DLQ_STAT_LOG = InternalLoggerFactory.getLogger(
+    private static final Logger ACCOUNT_LOG = LoggerFactory.getLogger(LoggerName.ACCOUNT_LOGGER_NAME);
+    private static final Logger DLQ_STAT_LOG = LoggerFactory.getLogger(
         LoggerName.DLQ_STATS_LOGGER_NAME);
     private ScheduledExecutorService scheduledExecutorService;
     private ScheduledExecutorService commercialExecutor;
@@ -668,7 +668,7 @@
         String[] itemNames,
         ScheduledExecutorService executorService,
         StatisticsItemFormatter formatter,
-        InternalLogger log,
+        Logger log,
         long interval) {
         final BrokerConfig brokerConfig = this.brokerConfig;
         StatisticsItemPrinter printer = new StatisticsItemPrinter(formatter, log);
diff --git a/store/src/main/java/org/apache/rocketmq/store/timer/TimerCheckpoint.java b/store/src/main/java/org/apache/rocketmq/store/timer/TimerCheckpoint.java
index 1559430..ec3c0c4 100644
--- a/store/src/main/java/org/apache/rocketmq/store/timer/TimerCheckpoint.java
+++ b/store/src/main/java/org/apache/rocketmq/store/timer/TimerCheckpoint.java
@@ -26,13 +26,13 @@
 import java.util.concurrent.atomic.AtomicLong;
 import org.apache.rocketmq.common.UtilAll;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.protocol.DataVersion;
 import org.apache.rocketmq.store.logfile.DefaultMappedFile;
 
 public class TimerCheckpoint {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
     private final RandomAccessFile randomAccessFile;
     private final FileChannel fileChannel;
     private final MappedByteBuffer mappedByteBuffer;
diff --git a/store/src/main/java/org/apache/rocketmq/store/timer/TimerLog.java b/store/src/main/java/org/apache/rocketmq/store/timer/TimerLog.java
index de42571..be3fe2f 100644
--- a/store/src/main/java/org/apache/rocketmq/store/timer/TimerLog.java
+++ b/store/src/main/java/org/apache/rocketmq/store/timer/TimerLog.java
@@ -17,8 +17,8 @@
 package org.apache.rocketmq.store.timer;
 
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.store.logfile.MappedFile;
 import org.apache.rocketmq.store.MappedFileQueue;
 import org.apache.rocketmq.store.SelectMappedBufferResult;
@@ -26,7 +26,7 @@
 import java.nio.ByteBuffer;
 
 public class TimerLog {
-    private static InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
+    private static Logger log = LoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
     public final static int BLANK_MAGIC_CODE = 0xBBCCDDEE ^ 1880681586 + 8;
     private final static int MIN_BLANK_LEN = 4 + 8 + 4;
     public final static int UNIT_SIZE = 4  //size
diff --git a/store/src/main/java/org/apache/rocketmq/store/timer/TimerMessageStore.java b/store/src/main/java/org/apache/rocketmq/store/timer/TimerMessageStore.java
index 4f8e5ec..d3af642 100644
--- a/store/src/main/java/org/apache/rocketmq/store/timer/TimerMessageStore.java
+++ b/store/src/main/java/org/apache/rocketmq/store/timer/TimerMessageStore.java
@@ -30,9 +30,8 @@
 import org.apache.rocketmq.common.message.MessageDecoder;
 import org.apache.rocketmq.common.message.MessageExt;
 import org.apache.rocketmq.common.topic.TopicValidator;
-import org.apache.rocketmq.logging.InnerLoggerFactory;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.store.ConsumeQueue;
 import org.apache.rocketmq.store.DefaultMessageStore;
 import org.apache.rocketmq.store.logfile.MappedFile;
@@ -88,7 +87,7 @@
     public static final int MAGIC_DELETE = 1 << 2;
     public boolean debug = false;
 
-    private static final InternalLogger LOGGER = InternalLoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
+    private static final Logger LOGGER = LoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
     private final PerfCounter.Ticks perfs = new PerfCounter.Ticks(LOGGER);
     private final BlockingQueue<TimerRequest> enqueuePutQueue;
     private final BlockingQueue<List<TimerRequest>> dequeueGetQueue;
@@ -439,7 +438,7 @@
             @Override public void run() {
                 if (TimerMessageStore.this.messageStore instanceof DefaultMessageStore &&
                     ((DefaultMessageStore) TimerMessageStore.this.messageStore).getBrokerConfig().isInBrokerContainer()) {
-                    InnerLoggerFactory.BROKER_IDENTITY.set(((DefaultMessageStore) TimerMessageStore.this.messageStore).getBrokerConfig().getLoggerIdentifier());
+//                    InnerLoggerFactory.BROKER_IDENTITY.set(((DefaultMessageStore) TimerMessageStore.this.messageStore).getBrokerConfig().getLoggerIdentifier());
                 }
                 try {
                     long minPy = messageStore.getMinPhyOffset();
@@ -455,7 +454,7 @@
             @Override public void run() {
                 if (TimerMessageStore.this.messageStore instanceof DefaultMessageStore &&
                     ((DefaultMessageStore) TimerMessageStore.this.messageStore).getBrokerConfig().isInBrokerContainer()) {
-                    InnerLoggerFactory.BROKER_IDENTITY.set(((DefaultMessageStore) TimerMessageStore.this.messageStore).getBrokerConfig().getLoggerIdentifier());
+//                    InnerLoggerFactory.BROKER_IDENTITY.set(((DefaultMessageStore) TimerMessageStore.this.messageStore).getBrokerConfig().getLoggerIdentifier());
                 }
                 try {
                     if (storeConfig.isTimerEnableCheckMetrics()) {
diff --git a/store/src/main/java/org/apache/rocketmq/store/timer/TimerMetrics.java b/store/src/main/java/org/apache/rocketmq/store/timer/TimerMetrics.java
index bb179af..8ce631a 100644
--- a/store/src/main/java/org/apache/rocketmq/store/timer/TimerMetrics.java
+++ b/store/src/main/java/org/apache/rocketmq/store/timer/TimerMetrics.java
@@ -39,13 +39,13 @@
 import org.apache.rocketmq.common.ConfigManager;
 import org.apache.rocketmq.common.constant.LoggerName;
 import org.apache.rocketmq.common.topic.TopicValidator;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.remoting.protocol.DataVersion;
 import org.apache.rocketmq.remoting.protocol.RemotingSerializable;
 
 public class TimerMetrics extends ConfigManager {
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.BROKER_LOGGER_NAME);
     private static final long LOCK_TIMEOUT_MILLIS = 3000;
     private transient final Lock lock = new ReentrantLock();
 
diff --git a/store/src/main/java/org/apache/rocketmq/store/timer/TimerWheel.java b/store/src/main/java/org/apache/rocketmq/store/timer/TimerWheel.java
index 5ad6eb0..c69e19f 100644
--- a/store/src/main/java/org/apache/rocketmq/store/timer/TimerWheel.java
+++ b/store/src/main/java/org/apache/rocketmq/store/timer/TimerWheel.java
@@ -18,8 +18,8 @@
 
 import org.apache.rocketmq.common.UtilAll;
 import org.apache.rocketmq.common.constant.LoggerName;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 import java.io.File;
 import java.io.FileNotFoundException;
@@ -31,7 +31,7 @@
 
 public class TimerWheel {
 
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
+    private static final Logger log = LoggerFactory.getLogger(LoggerName.STORE_LOGGER_NAME);
     public static final int BLANK = -1, IGNORE = -2;
     public final int slotsTotal;
     public final int precisionMs;
diff --git a/store/src/main/java/org/apache/rocketmq/store/util/PerfCounter.java b/store/src/main/java/org/apache/rocketmq/store/util/PerfCounter.java
index 2ba8316..07ef67e 100644
--- a/store/src/main/java/org/apache/rocketmq/store/util/PerfCounter.java
+++ b/store/src/main/java/org/apache/rocketmq/store/util/PerfCounter.java
@@ -17,7 +17,7 @@
 package org.apache.rocketmq.store.util;
 
 import org.apache.rocketmq.common.ServiceThread;
-import org.apache.rocketmq.logging.InternalLogger;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
 
 import java.sql.Timestamp;
 import java.util.Iterator;
@@ -38,7 +38,7 @@
         }
     };
 
-    private final InternalLogger logger;
+    private final Logger logger;
     private String prefix = "DEFAULT";
 
     public float getLastTps() {
@@ -59,7 +59,7 @@
         this(5001, null, null, 1000 * 1000, 10 * 1000);
     }
 
-    public PerfCounter(int slots, InternalLogger logger, String prefix, int maxNumPerCount, int maxTimeMsPerCount) {
+    public PerfCounter(int slots, Logger logger, String prefix, int maxNumPerCount, int maxTimeMsPerCount) {
         if (slots < 3000) {
             throw new RuntimeException("slots must bigger than 3000, but:%s" + slots);
         }
@@ -218,7 +218,7 @@
     }
 
     public static class Ticks extends ServiceThread {
-        private final InternalLogger logger;
+        private final Logger logger;
         private final Map<String, PerfCounter> perfs = new ConcurrentHashMap<>();
         private final Map<String, AtomicLong> keyFreqs = new ConcurrentHashMap<>();
         private final PerfCounter defaultPerf;
@@ -234,7 +234,7 @@
             this(null, 1000 * 1000, 10 * 1000, 20 * 1000, 100 * 1000);
         }
 
-        public Ticks(InternalLogger logger) {
+        public Ticks(Logger logger) {
             this(logger, 1000 * 1000, 10 * 1000, 20 * 1000, 100 * 1000);
         }
 
@@ -243,7 +243,7 @@
             return this.getClass().getName();
         }
 
-        public Ticks(InternalLogger logger, int maxNumPerCount, int maxTimeMsPerCount, int maxKeyNumPerf, int maxKeyNumDebug) {
+        public Ticks(Logger logger, int maxNumPerCount, int maxTimeMsPerCount, int maxKeyNumPerf, int maxKeyNumDebug) {
             this.logger = logger;
             this.maxNumPerCount = maxNumPerCount;
             this.maxTimeMsPerCount = maxTimeMsPerCount;
diff --git a/store/src/test/java/org/apache/rocketmq/store/StoreTestUtil.java b/store/src/test/java/org/apache/rocketmq/store/StoreTestUtil.java
index 0196c6d..4365dd3 100644
--- a/store/src/test/java/org/apache/rocketmq/store/StoreTestUtil.java
+++ b/store/src/test/java/org/apache/rocketmq/store/StoreTestUtil.java
@@ -21,8 +21,8 @@
 import java.io.IOException;
 import java.util.List;
 import org.apache.commons.lang3.SystemUtils;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.store.index.IndexFile;
 import org.apache.rocketmq.store.index.IndexService;
 
@@ -34,7 +34,7 @@
 
 public class StoreTestUtil {
 
-    private static final InternalLogger log = InternalLoggerFactory.getLogger(StoreTestUtil.class);
+    private static final Logger log = LoggerFactory.getLogger(StoreTestUtil.class);
 
     public static boolean isCommitLogAvailable(DefaultMessageStore store) {
         try {
diff --git a/store/src/test/resources/logback-test.xml b/store/src/test/resources/rmq.logback-test.xml
similarity index 65%
rename from store/src/test/resources/logback-test.xml
rename to store/src/test/resources/rmq.logback-test.xml
index a033816..c3ec0d1 100644
--- a/store/src/test/resources/logback-test.xml
+++ b/store/src/test/resources/rmq.logback-test.xml
@@ -17,19 +17,20 @@
   -->
 <configuration>
 
-    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
-        <encoder>
-            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n</pattern>
-            <charset class="java.nio.charset.Charset">UTF-8</charset>
-        </encoder>
+    <appender name="CONSOLE" class="org.apache.rocketmq.shade.ch.qos.logback.core.ConsoleAppender">
+        <layout class="org.apache.rocketmq.shade.ch.qos.logback.classic.PatternLayout">
+            <Pattern>
+                %d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n
+            </Pattern>
+        </layout>
     </appender>
 
-    <logger name="org.apache.rocketmq.store" level="WARN" additivity="false">
-        <appender-ref ref="STDOUT"/>
+    <logger name="org.apache.rocketmq" level="error" additivity="false">
+        <appender-ref ref="CONSOLE"/>
     </logger>
 
-    <root level="OFF">
-        <appender-ref ref="STDOUT"/>
+    <root level="error">
+        <appender-ref ref="CONSOLE"/>
     </root>
 
-</configuration>
+</configuration>
\ No newline at end of file
diff --git a/test/BUILD.bazel b/test/BUILD.bazel
index 37f6336..d1ebc6b 100644
--- a/test/BUILD.bazel
+++ b/test/BUILD.bazel
@@ -26,7 +26,6 @@
         "//common",
         "//container",
         "//controller",
-        "//logging",
         "//namesrv",
         "//proxy",
         "//remoting",
@@ -43,12 +42,12 @@
         "@maven//:commons_validator_commons_validator",
         "@maven//:io_netty_netty_all",
         "@maven//:javax_annotation_javax_annotation_api",
-        "@maven//:log4j_log4j",
         "@maven//:org_apache_commons_commons_lang3",
         "@maven//:org_awaitility_awaitility",
         "@maven//:org_lz4_lz4_java",
         "@maven//:org_reflections_reflections",
         "@maven//:org_slf4j_slf4j_api",
+        "@maven//:io_github_aliyun_mq_rocketmq_slf4j_api",
     ],
 )
 
@@ -59,8 +58,7 @@
         "src/test/resources/rmq-proxy-home/conf/broker.conf",
         "src/test/resources/rmq-proxy-home/conf/logback_proxy.xml",
         "src/test/resources/rmq-proxy-home/conf/rmq-proxy.json",
-        "src/test/resources/log4j.xml",
-        "src/test/resources/logback-test.xml",
+        "src/test/resources/rmq.logback-test.xml",
     ] + glob(["src/test/resources/schema/**/*.schema"]),
     visibility = ["//visibility:public"],
     deps = [
@@ -71,7 +69,6 @@
         "//common",
         "//container",
         "//controller",
-        "//logging",
         "//namesrv",
         "//proxy",
         "//remoting",
@@ -87,10 +84,10 @@
         "@maven//:io_grpc_grpc_stub",
         "@maven//:io_grpc_grpc_testing",
         "@maven//:io_netty_netty_all",
-        "@maven//:log4j_log4j",
         "@maven//:org_apache_commons_commons_lang3",
         "@maven//:org_apache_rocketmq_rocketmq_proto",
         "@maven//:org_slf4j_slf4j_api",
+        "@maven//:io_github_aliyun_mq_rocketmq_slf4j_api",
     ],
 )
 
diff --git a/test/pom.xml b/test/pom.xml
index 17c51ca..977c860 100644
--- a/test/pom.xml
+++ b/test/pom.xml
@@ -16,7 +16,9 @@
   ~  limitations under the License.
   -->
 
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <parent>
         <artifactId>rocketmq-all</artifactId>
         <groupId>org.apache.rocketmq</groupId>
@@ -33,10 +35,6 @@
 
     <dependencies>
         <dependency>
-            <groupId>log4j</groupId>
-            <artifactId>log4j</artifactId>
-        </dependency>
-        <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>rocketmq-proto</artifactId>
         </dependency>
@@ -47,18 +45,22 @@
         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>rocketmq-proxy</artifactId>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>rocketmq-broker</artifactId>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>rocketmq-namesrv</artifactId>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>rocketmq-container</artifactId>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.tomcat</groupId>
@@ -79,10 +81,12 @@
         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>rocketmq-client</artifactId>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>rocketmq-tools</artifactId>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>io.grpc</groupId>
@@ -97,6 +101,19 @@
             <groupId>org.reflections</groupId>
             <artifactId>reflections</artifactId>
         </dependency>
+        <dependency>
+            <groupId>io.github.aliyun-mq</groupId>
+            <artifactId>rocketmq-slf4j-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.github.aliyun-mq</groupId>
+            <artifactId>rocketmq-logback-classic</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/test/src/main/java/org/apache/rocketmq/test/client/mq/MQAsyncProducer.java b/test/src/main/java/org/apache/rocketmq/test/client/mq/MQAsyncProducer.java
index 6b2357b..b471142 100644
--- a/test/src/main/java/org/apache/rocketmq/test/client/mq/MQAsyncProducer.java
+++ b/test/src/main/java/org/apache/rocketmq/test/client/mq/MQAsyncProducer.java
@@ -18,12 +18,14 @@
 package org.apache.rocketmq.test.client.mq;
 
 import java.util.concurrent.atomic.AtomicBoolean;
-import org.apache.log4j.Logger;
+
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.test.clientinterface.AbstractMQProducer;
 import org.apache.rocketmq.test.util.TestUtil;
 
 public class MQAsyncProducer {
-    private static Logger logger = Logger.getLogger(MQAsyncProducer.class);
+    private static Logger logger = LoggerFactory.getLogger(MQAsyncProducer.class);
     private AbstractMQProducer producer = null;
     private long msgNum;
     private int intervalMills;
diff --git a/test/src/main/java/org/apache/rocketmq/test/client/rmq/RMQAsyncSendProducer.java b/test/src/main/java/org/apache/rocketmq/test/client/rmq/RMQAsyncSendProducer.java
index d28a5fd..852aae5 100644
--- a/test/src/main/java/org/apache/rocketmq/test/client/rmq/RMQAsyncSendProducer.java
+++ b/test/src/main/java/org/apache/rocketmq/test/client/rmq/RMQAsyncSendProducer.java
@@ -22,7 +22,6 @@
 import java.util.Collections;
 import java.util.List;
 import java.util.concurrent.atomic.AtomicInteger;
-import org.apache.log4j.Logger;
 import org.apache.rocketmq.client.exception.MQClientException;
 import org.apache.rocketmq.client.producer.DefaultMQProducer;
 import org.apache.rocketmq.client.producer.MessageQueueSelector;
@@ -30,13 +29,15 @@
 import org.apache.rocketmq.client.producer.SendResult;
 import org.apache.rocketmq.common.message.Message;
 import org.apache.rocketmq.common.message.MessageQueue;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.test.clientinterface.AbstractMQProducer;
 import org.apache.rocketmq.test.sendresult.ResultWrapper;
 import org.apache.rocketmq.test.util.RandomUtil;
 import org.apache.rocketmq.test.util.TestUtil;
 
 public class RMQAsyncSendProducer extends AbstractMQProducer {
-    private static Logger logger = Logger
+    private static Logger logger = LoggerFactory
         .getLogger(RMQAsyncSendProducer.class);
     private String nsAddr = null;
     private DefaultMQProducer producer = null;
diff --git a/test/src/main/java/org/apache/rocketmq/test/client/rmq/RMQBroadCastConsumer.java b/test/src/main/java/org/apache/rocketmq/test/client/rmq/RMQBroadCastConsumer.java
index 83ed81c..75224a6 100644
--- a/test/src/main/java/org/apache/rocketmq/test/client/rmq/RMQBroadCastConsumer.java
+++ b/test/src/main/java/org/apache/rocketmq/test/client/rmq/RMQBroadCastConsumer.java
@@ -17,12 +17,13 @@
 
 package org.apache.rocketmq.test.client.rmq;
 
-import org.apache.log4j.Logger;
 import org.apache.rocketmq.remoting.protocol.heartbeat.MessageModel;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.test.listener.AbstractListener;
 
 public class RMQBroadCastConsumer extends RMQNormalConsumer {
-    private static Logger logger = Logger.getLogger(RMQBroadCastConsumer.class);
+    private static Logger logger = LoggerFactory.getLogger(RMQBroadCastConsumer.class);
 
     public RMQBroadCastConsumer(String nsAddr, String topic, String subExpression,
         String consumerGroup, AbstractListener listner) {
diff --git a/test/src/main/java/org/apache/rocketmq/test/client/rmq/RMQNormalConsumer.java b/test/src/main/java/org/apache/rocketmq/test/client/rmq/RMQNormalConsumer.java
index 7cbeaa8..a78f2ab 100644
--- a/test/src/main/java/org/apache/rocketmq/test/client/rmq/RMQNormalConsumer.java
+++ b/test/src/main/java/org/apache/rocketmq/test/client/rmq/RMQNormalConsumer.java
@@ -17,16 +17,17 @@
 
 package org.apache.rocketmq.test.client.rmq;
 
-import org.apache.log4j.Logger;
 import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer;
 import org.apache.rocketmq.client.exception.MQClientException;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.test.clientinterface.AbstractMQConsumer;
 import org.apache.rocketmq.test.listener.AbstractListener;
 import org.apache.rocketmq.test.util.RandomUtil;
 
 public class RMQNormalConsumer extends AbstractMQConsumer {
 
-    private static final Logger LOGGER = Logger.getLogger(RMQNormalConsumer.class);
+    private static final Logger LOGGER = LoggerFactory.getLogger(RMQNormalConsumer.class);
     protected DefaultMQPushConsumer consumer = null;
 
     public RMQNormalConsumer(String nsAddr, String topic, String subExpression,
diff --git a/test/src/main/java/org/apache/rocketmq/test/client/rmq/RMQNormalProducer.java b/test/src/main/java/org/apache/rocketmq/test/client/rmq/RMQNormalProducer.java
index eb8cf44..1508391 100644
--- a/test/src/main/java/org/apache/rocketmq/test/client/rmq/RMQNormalProducer.java
+++ b/test/src/main/java/org/apache/rocketmq/test/client/rmq/RMQNormalProducer.java
@@ -20,17 +20,18 @@
 import java.nio.charset.StandardCharsets;
 import java.util.List;
 import java.util.Map;
-import org.apache.log4j.Logger;
 import org.apache.rocketmq.client.exception.MQClientException;
 import org.apache.rocketmq.client.producer.DefaultMQProducer;
 import org.apache.rocketmq.client.producer.SendStatus;
 import org.apache.rocketmq.common.message.Message;
 import org.apache.rocketmq.common.message.MessageQueue;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.test.clientinterface.AbstractMQProducer;
 import org.apache.rocketmq.test.sendresult.ResultWrapper;
 
 public class RMQNormalProducer extends AbstractMQProducer {
-    private static Logger logger = Logger.getLogger(RMQNormalProducer.class);
+    private static Logger logger = LoggerFactory.getLogger(RMQNormalProducer.class);
     private DefaultMQProducer producer = null;
     private String nsAddr = null;
 
@@ -94,21 +95,21 @@
     }
 
     public ResultWrapper send(Object msg, Object orderKey) {
-        org.apache.rocketmq.client.producer.SendResult metaqResult = null;
+        org.apache.rocketmq.client.producer.SendResult internalSendResult = null;
         Message message = (Message) msg;
         try {
             long start = System.currentTimeMillis();
-            metaqResult = producer.send(message);
+            internalSendResult = producer.send(message);
             this.msgRTs.addData(System.currentTimeMillis() - start);
             if (isDebug) {
-                logger.info(metaqResult);
+                logger.info("SendResult: {}", internalSendResult);
             }
-            sendResult.setMsgId(metaqResult.getMsgId());
-            sendResult.setSendResult(metaqResult.getSendStatus().equals(SendStatus.SEND_OK));
-            sendResult.setBrokerIp(metaqResult.getMessageQueue().getBrokerName());
+            sendResult.setMsgId(internalSendResult.getMsgId());
+            sendResult.setSendResult(internalSendResult.getSendStatus().equals(SendStatus.SEND_OK));
+            sendResult.setBrokerIp(internalSendResult.getMessageQueue().getBrokerName());
             msgBodys.addData(new String(message.getBody(), StandardCharsets.UTF_8));
             originMsgs.addData(msg);
-            originMsgIndex.put(new String(message.getBody(), StandardCharsets.UTF_8), metaqResult);
+            originMsgIndex.put(new String(message.getBody(), StandardCharsets.UTF_8), internalSendResult);
         } catch (Exception e) {
             if (isDebug) {
                 e.printStackTrace();
@@ -141,20 +142,20 @@
     }
 
     public ResultWrapper sendMQ(Message msg, MessageQueue mq) {
-        org.apache.rocketmq.client.producer.SendResult metaqResult = null;
+        org.apache.rocketmq.client.producer.SendResult internalSendResult = null;
         try {
             long start = System.currentTimeMillis();
-            metaqResult = producer.send(msg, mq);
+            internalSendResult = producer.send(msg, mq);
             this.msgRTs.addData(System.currentTimeMillis() - start);
             if (isDebug) {
-                logger.info(metaqResult);
+                logger.info("SendResult: {}", internalSendResult);
             }
-            sendResult.setMsgId(metaqResult.getMsgId());
-            sendResult.setSendResult(metaqResult.getSendStatus().equals(SendStatus.SEND_OK));
-            sendResult.setBrokerIp(metaqResult.getMessageQueue().getBrokerName());
+            sendResult.setMsgId(internalSendResult.getMsgId());
+            sendResult.setSendResult(internalSendResult.getSendStatus().equals(SendStatus.SEND_OK));
+            sendResult.setBrokerIp(internalSendResult.getMessageQueue().getBrokerName());
             msgBodys.addData(new String(msg.getBody(), StandardCharsets.UTF_8));
             originMsgs.addData(msg);
-            originMsgIndex.put(new String(msg.getBody(), StandardCharsets.UTF_8), metaqResult);
+            originMsgIndex.put(new String(msg.getBody(), StandardCharsets.UTF_8), internalSendResult);
         } catch (Exception e) {
             if (isDebug) {
                 e.printStackTrace();
diff --git a/test/src/main/java/org/apache/rocketmq/test/client/rmq/RMQPopConsumer.java b/test/src/main/java/org/apache/rocketmq/test/client/rmq/RMQPopConsumer.java
index 49a06bb..0cd9e0e 100644
--- a/test/src/main/java/org/apache/rocketmq/test/client/rmq/RMQPopConsumer.java
+++ b/test/src/main/java/org/apache/rocketmq/test/client/rmq/RMQPopConsumer.java
@@ -20,7 +20,6 @@
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.TimeoutException;
-import org.apache.log4j.Logger;
 import org.apache.rocketmq.client.consumer.AckResult;
 import org.apache.rocketmq.client.consumer.PopResult;
 import org.apache.rocketmq.client.exception.MQBrokerException;
@@ -29,12 +28,14 @@
 import org.apache.rocketmq.common.filter.ExpressionType;
 import org.apache.rocketmq.common.message.MessageQueue;
 import org.apache.rocketmq.remoting.exception.RemotingException;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.test.factory.ConsumerFactory;
 import org.apache.rocketmq.test.listener.AbstractListener;
 
 public class RMQPopConsumer extends RMQNormalConsumer {
 
-    private static final Logger log = Logger.getLogger(RMQPopConsumer.class);
+    private static final Logger log = LoggerFactory.getLogger(RMQPopConsumer.class);
 
     public static final long POP_TIMEOUT = 3000;
     public static final long DEFAULT_INVISIBLE_TIME = 30000;
diff --git a/test/src/main/java/org/apache/rocketmq/test/client/rmq/RMQSqlConsumer.java b/test/src/main/java/org/apache/rocketmq/test/client/rmq/RMQSqlConsumer.java
index 3c03ee7..2d07082 100644
--- a/test/src/main/java/org/apache/rocketmq/test/client/rmq/RMQSqlConsumer.java
+++ b/test/src/main/java/org/apache/rocketmq/test/client/rmq/RMQSqlConsumer.java
@@ -17,12 +17,13 @@
 
 package org.apache.rocketmq.test.client.rmq;
 
-import org.apache.log4j.Logger;
 import org.apache.rocketmq.client.consumer.MessageSelector;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.test.listener.AbstractListener;
 
 public class RMQSqlConsumer extends RMQNormalConsumer {
-    private static Logger logger = Logger.getLogger(RMQSqlConsumer.class);
+    private static Logger logger = LoggerFactory.getLogger(RMQSqlConsumer.class);
     private MessageSelector selector;
 
     public RMQSqlConsumer(String nsAddr, String topic, MessageSelector selector,
diff --git a/test/src/main/java/org/apache/rocketmq/test/client/rmq/RMQTransactionalProducer.java b/test/src/main/java/org/apache/rocketmq/test/client/rmq/RMQTransactionalProducer.java
index 69563e0..463622d 100644
--- a/test/src/main/java/org/apache/rocketmq/test/client/rmq/RMQTransactionalProducer.java
+++ b/test/src/main/java/org/apache/rocketmq/test/client/rmq/RMQTransactionalProducer.java
@@ -18,18 +18,19 @@
 package org.apache.rocketmq.test.client.rmq;
 
 import java.nio.charset.StandardCharsets;
-import org.apache.log4j.Logger;
 import org.apache.rocketmq.client.exception.MQClientException;
 import org.apache.rocketmq.client.producer.LocalTransactionState;
 import org.apache.rocketmq.client.producer.TransactionListener;
 import org.apache.rocketmq.client.producer.TransactionMQProducer;
 import org.apache.rocketmq.common.Pair;
 import org.apache.rocketmq.common.message.Message;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.test.clientinterface.AbstractMQProducer;
 import org.apache.rocketmq.test.sendresult.ResultWrapper;
 
 public class RMQTransactionalProducer extends AbstractMQProducer {
-    private static Logger logger  = Logger.getLogger(RMQTransactionalProducer.class);
+    private static Logger logger  = LoggerFactory.getLogger(RMQTransactionalProducer.class);
     private TransactionMQProducer producer = null;
     private String nsAddr = null;
 
@@ -62,7 +63,7 @@
             super.setStartSuccess(true);
         } catch (MQClientException e) {
             super.setStartSuccess(false);
-            logger.error(e);
+            logger.error("", e);
             e.printStackTrace();
         }
     }
@@ -77,7 +78,7 @@
             metaqResult = producer.sendMessageInTransaction(message, arg);
             this.msgRTs.addData(System.currentTimeMillis() - start);
             if (isDebug) {
-                logger.info(metaqResult);
+                logger.info("SendResult: {}", metaqResult);
             }
             sendResult.setMsgId(metaqResult.getMsgId());
             sendResult.setSendResult(true);
diff --git a/test/src/main/java/org/apache/rocketmq/test/listener/AbstractListener.java b/test/src/main/java/org/apache/rocketmq/test/listener/AbstractListener.java
index 10eedd1..a5dc4c6 100644
--- a/test/src/main/java/org/apache/rocketmq/test/listener/AbstractListener.java
+++ b/test/src/main/java/org/apache/rocketmq/test/listener/AbstractListener.java
@@ -21,13 +21,14 @@
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
-import org.apache.log4j.Logger;
 import org.apache.rocketmq.client.consumer.listener.MessageListener;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.test.clientinterface.MQCollector;
 import org.apache.rocketmq.test.util.TestUtil;
 
 public class AbstractListener extends MQCollector implements MessageListener {
-    public static final Logger LOGGER = Logger.getLogger(AbstractListener.class);
+    public static final Logger LOGGER = LoggerFactory.getLogger(AbstractListener.class);
     protected boolean isDebug = true;
     protected String listenerName = null;
     protected Collection<Object> allSendMsgs = null;
@@ -105,7 +106,7 @@
     public void waitForMessageConsume(Map<Object, Object> sendMsgIndex, int timeoutMills) {
         Collection<Object> notRecvMsgs = waitForMessageConsume(sendMsgIndex.keySet(), timeoutMills);
         for (Object object : notRecvMsgs) {
-            LOGGER.info(sendMsgIndex.get(object));
+            LOGGER.info("{}", sendMsgIndex.get(object));
         }
     }
 }
diff --git a/test/src/main/java/org/apache/rocketmq/test/listener/rmq/concurrent/RMQNormalListener.java b/test/src/main/java/org/apache/rocketmq/test/listener/rmq/concurrent/RMQNormalListener.java
index 6782168..1a0345b 100644
--- a/test/src/main/java/org/apache/rocketmq/test/listener/rmq/concurrent/RMQNormalListener.java
+++ b/test/src/main/java/org/apache/rocketmq/test/listener/rmq/concurrent/RMQNormalListener.java
@@ -65,7 +65,7 @@
                         msg.getMsgId(), msg.getStoreHost(), msg.getQueueId(),
                         msg.getQueueOffset()));
                 } else {
-                    LOGGER.info(msg);
+                    LOGGER.info("{}", msg);
                 }
             }
 
diff --git a/test/src/main/java/org/apache/rocketmq/test/listener/rmq/order/RMQOrderListener.java b/test/src/main/java/org/apache/rocketmq/test/listener/rmq/order/RMQOrderListener.java
index bddb349..85e249e 100644
--- a/test/src/main/java/org/apache/rocketmq/test/listener/rmq/order/RMQOrderListener.java
+++ b/test/src/main/java/org/apache/rocketmq/test/listener/rmq/order/RMQOrderListener.java
@@ -73,7 +73,7 @@
                 if (listenerName != null && listenerName != "") {
                     LOGGER.info(listenerName + ": " + msg);
                 } else {
-                    LOGGER.info(msg);
+                    LOGGER.info("{}", msg);
                 }
             }
 
diff --git a/test/src/main/java/org/apache/rocketmq/test/lmq/benchmark/BenchLmqStore.java b/test/src/main/java/org/apache/rocketmq/test/lmq/benchmark/BenchLmqStore.java
index ac2da4f..f15f122 100644
--- a/test/src/main/java/org/apache/rocketmq/test/lmq/benchmark/BenchLmqStore.java
+++ b/test/src/main/java/org/apache/rocketmq/test/lmq/benchmark/BenchLmqStore.java
@@ -48,9 +48,9 @@
 import org.apache.rocketmq.remoting.protocol.header.QueryConsumerOffsetRequestHeader;
 import org.apache.rocketmq.remoting.protocol.header.UpdateConsumerOffsetRequestHeader;
 import org.apache.rocketmq.remoting.protocol.route.TopicRouteData;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.test.util.StatUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class BenchLmqStore {
     private static Logger logger = LoggerFactory.getLogger(BenchLmqStore.class);
diff --git a/test/src/main/java/org/apache/rocketmq/test/util/MQAdminTestUtils.java b/test/src/main/java/org/apache/rocketmq/test/util/MQAdminTestUtils.java
index a32ebd9..122df3b 100644
--- a/test/src/main/java/org/apache/rocketmq/test/util/MQAdminTestUtils.java
+++ b/test/src/main/java/org/apache/rocketmq/test/util/MQAdminTestUtils.java
@@ -26,7 +26,6 @@
 import org.apache.commons.cli.CommandLine;
 import org.apache.commons.cli.DefaultParser;
 import org.apache.commons.cli.Options;
-import org.apache.log4j.Logger;
 import org.apache.rocketmq.client.exception.MQBrokerException;
 import org.apache.rocketmq.client.exception.MQClientException;
 import org.apache.rocketmq.client.impl.factory.MQClientInstance;
@@ -42,6 +41,8 @@
 import org.apache.rocketmq.remoting.protocol.statictopic.TopicRemappingDetailWrapper;
 import org.apache.rocketmq.remoting.protocol.subscription.SubscriptionGroupConfig;
 import org.apache.rocketmq.remoting.rpc.ClientMetadata;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.srvutil.ServerUtil;
 import org.apache.rocketmq.tools.admin.DefaultMQAdminExt;
 import org.apache.rocketmq.tools.admin.MQAdminUtils;
@@ -53,7 +54,7 @@
 import static org.awaitility.Awaitility.await;
 
 public class MQAdminTestUtils {
-    private static Logger log = Logger.getLogger(MQAdminTestUtils.class);
+    private static Logger log = LoggerFactory.getLogger(MQAdminTestUtils.class);
 
     public static boolean createTopic(String nameSrvAddr, String clusterName, String topic,
                                       int queueNum, Map<String, String> attributes) {
diff --git a/test/src/main/java/org/apache/rocketmq/test/util/MQWait.java b/test/src/main/java/org/apache/rocketmq/test/util/MQWait.java
index 0c24427..b1611e9 100644
--- a/test/src/main/java/org/apache/rocketmq/test/util/MQWait.java
+++ b/test/src/main/java/org/apache/rocketmq/test/util/MQWait.java
@@ -20,13 +20,15 @@
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
-import org.apache.log4j.Logger;
+
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.test.listener.AbstractListener;
 
 import static com.google.common.truth.Truth.assertThat;
 
 public class MQWait {
-    private static Logger logger = Logger.getLogger(MQWait.class);
+    private static Logger logger = LoggerFactory.getLogger(MQWait.class);
 
     public static boolean waitConsumeAll(int timeoutMills, Collection<Object> allSendMsgs,
         AbstractListener... listeners) {
diff --git a/test/src/main/java/org/apache/rocketmq/test/util/StatUtil.java b/test/src/main/java/org/apache/rocketmq/test/util/StatUtil.java
index 5645d66..fab64f8 100644
--- a/test/src/main/java/org/apache/rocketmq/test/util/StatUtil.java
+++ b/test/src/main/java/org/apache/rocketmq/test/util/StatUtil.java
@@ -30,9 +30,8 @@
 import java.util.concurrent.atomic.AtomicLong;
 
 import javax.annotation.Generated;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 import static java.math.BigDecimal.ROUND_HALF_UP;
 
diff --git a/test/src/main/java/org/apache/rocketmq/test/util/VerifyUtils.java b/test/src/main/java/org/apache/rocketmq/test/util/VerifyUtils.java
index af4ecca..0c22946 100644
--- a/test/src/main/java/org/apache/rocketmq/test/util/VerifyUtils.java
+++ b/test/src/main/java/org/apache/rocketmq/test/util/VerifyUtils.java
@@ -20,11 +20,12 @@
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
-import org.apache.log4j.Logger;
 import org.apache.rocketmq.common.message.MessageExt;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 public class VerifyUtils {
-    private static Logger logger = Logger.getLogger(VerifyUtils.class);
+    private static Logger logger = LoggerFactory.getLogger(VerifyUtils.class);
 
     public static int verify(Collection<Object> sendMsgs, Collection<Object> recvMsgs) {
         int miss = 0;
diff --git a/test/src/test/java/org/apache/rocketmq/test/base/BaseConf.java b/test/src/test/java/org/apache/rocketmq/test/base/BaseConf.java
index 491f1be..631343f 100644
--- a/test/src/test/java/org/apache/rocketmq/test/base/BaseConf.java
+++ b/test/src/test/java/org/apache/rocketmq/test/base/BaseConf.java
@@ -38,6 +38,8 @@
 import org.apache.rocketmq.namesrv.NamesrvController;
 import org.apache.rocketmq.remoting.protocol.RemotingCommand;
 import org.apache.rocketmq.remoting.protocol.route.BrokerData;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.test.client.rmq.RMQAsyncSendProducer;
 import org.apache.rocketmq.test.client.rmq.RMQNormalConsumer;
 import org.apache.rocketmq.test.client.rmq.RMQNormalProducer;
@@ -52,8 +54,6 @@
 import org.apache.rocketmq.tools.admin.DefaultMQAdminExt;
 import org.apache.rocketmq.tools.admin.MQAdminExt;
 import org.junit.Assert;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import static org.awaitility.Awaitility.await;
 
diff --git a/test/src/test/java/org/apache/rocketmq/test/base/IntegrationTestBase.java b/test/src/test/java/org/apache/rocketmq/test/base/IntegrationTestBase.java
index 32760dc..5fa0e14 100644
--- a/test/src/test/java/org/apache/rocketmq/test/base/IntegrationTestBase.java
+++ b/test/src/test/java/org/apache/rocketmq/test/base/IntegrationTestBase.java
@@ -34,8 +34,8 @@
 import org.apache.rocketmq.common.attribute.CQType;
 import org.apache.rocketmq.common.attribute.TopicMessageType;
 import org.apache.rocketmq.common.namesrv.NamesrvConfig;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.namesrv.NamesrvController;
 import org.apache.rocketmq.remoting.netty.NettyClientConfig;
 import org.apache.rocketmq.remoting.netty.NettyServerConfig;
@@ -43,7 +43,7 @@
 import org.apache.rocketmq.test.util.MQAdminTestUtils;
 
 public class IntegrationTestBase {
-    public static InternalLogger logger = InternalLoggerFactory.getLogger(IntegrationTestBase.class);
+    public static Logger logger = LoggerFactory.getLogger(IntegrationTestBase.class);
 
     protected static final String SEP = File.separator;
     protected static final String BROKER_NAME_PREFIX = "TestBrokerName_";
diff --git a/test/src/test/java/org/apache/rocketmq/test/client/consumer/balance/NormalMsgDynamicBalanceIT.java b/test/src/test/java/org/apache/rocketmq/test/client/consumer/balance/NormalMsgDynamicBalanceIT.java
index 60a8cd4..bb17444 100644
--- a/test/src/test/java/org/apache/rocketmq/test/client/consumer/balance/NormalMsgDynamicBalanceIT.java
+++ b/test/src/test/java/org/apache/rocketmq/test/client/consumer/balance/NormalMsgDynamicBalanceIT.java
@@ -17,7 +17,8 @@
 
 package org.apache.rocketmq.test.client.consumer.balance;
 
-import org.apache.log4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.test.base.BaseConf;
 import org.apache.rocketmq.test.client.rmq.RMQNormalConsumer;
 import org.apache.rocketmq.test.client.rmq.RMQNormalProducer;
@@ -33,7 +34,7 @@
 import static com.google.common.truth.Truth.assertThat;
 
 public class NormalMsgDynamicBalanceIT extends BaseConf {
-    private static Logger logger = Logger.getLogger(NormalMsgStaticBalanceIT.class);
+    private static Logger logger = LoggerFactory.getLogger(NormalMsgStaticBalanceIT.class);
     private RMQNormalProducer producer = null;
     private String topic = null;
 
diff --git a/test/src/test/java/org/apache/rocketmq/test/client/consumer/balance/NormalMsgStaticBalanceIT.java b/test/src/test/java/org/apache/rocketmq/test/client/consumer/balance/NormalMsgStaticBalanceIT.java
index 201965c..3e757fc 100644
--- a/test/src/test/java/org/apache/rocketmq/test/client/consumer/balance/NormalMsgStaticBalanceIT.java
+++ b/test/src/test/java/org/apache/rocketmq/test/client/consumer/balance/NormalMsgStaticBalanceIT.java
@@ -17,6 +17,8 @@
 
 package org.apache.rocketmq.test.client.consumer.balance;
 
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.test.base.BaseConf;
 import org.apache.rocketmq.test.client.rmq.RMQNormalConsumer;
 import org.apache.rocketmq.test.client.rmq.RMQNormalProducer;
@@ -28,8 +30,6 @@
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import static com.google.common.truth.Truth.assertThat;
 
diff --git a/test/src/test/java/org/apache/rocketmq/test/client/consumer/broadcast/BaseBroadcast.java b/test/src/test/java/org/apache/rocketmq/test/client/consumer/broadcast/BaseBroadcast.java
index 4eff939..cc3fd8f 100644
--- a/test/src/test/java/org/apache/rocketmq/test/client/consumer/broadcast/BaseBroadcast.java
+++ b/test/src/test/java/org/apache/rocketmq/test/client/consumer/broadcast/BaseBroadcast.java
@@ -17,14 +17,15 @@
 
 package org.apache.rocketmq.test.client.consumer.broadcast;
 
-import org.apache.log4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.test.base.BaseConf;
 import org.apache.rocketmq.test.client.rmq.RMQBroadCastConsumer;
 import org.apache.rocketmq.test.factory.ConsumerFactory;
 import org.apache.rocketmq.test.listener.AbstractListener;
 
 public class BaseBroadcast extends BaseConf {
-    private static Logger logger = Logger.getLogger(BaseBroadcast.class);
+    private static Logger logger = LoggerFactory.getLogger(BaseBroadcast.class);
 
     public static RMQBroadCastConsumer getBroadCastConsumer(String nsAddr, String topic,
         String subExpression,
diff --git a/test/src/test/java/org/apache/rocketmq/test/client/consumer/broadcast/normal/BroadcastNormalMsgNotReceiveIT.java b/test/src/test/java/org/apache/rocketmq/test/client/consumer/broadcast/normal/BroadcastNormalMsgNotReceiveIT.java
index cb3fc60..8f4769c 100644
--- a/test/src/test/java/org/apache/rocketmq/test/client/consumer/broadcast/normal/BroadcastNormalMsgNotReceiveIT.java
+++ b/test/src/test/java/org/apache/rocketmq/test/client/consumer/broadcast/normal/BroadcastNormalMsgNotReceiveIT.java
@@ -17,7 +17,8 @@
 
 package org.apache.rocketmq.test.client.consumer.broadcast.normal;
 
-import org.apache.log4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.test.client.consumer.broadcast.BaseBroadcast;
 import org.apache.rocketmq.test.client.rmq.RMQBroadCastConsumer;
 import org.apache.rocketmq.test.client.rmq.RMQNormalProducer;
@@ -31,7 +32,7 @@
 import static com.google.common.truth.Truth.assertThat;
 
 public class BroadcastNormalMsgNotReceiveIT extends BaseBroadcast {
-    private static Logger logger = Logger
+    private static Logger logger = LoggerFactory
         .getLogger(NormalMsgTwoSameGroupConsumerIT.class);
     private RMQNormalProducer producer = null;
     private String topic = null;
diff --git a/test/src/test/java/org/apache/rocketmq/test/client/consumer/broadcast/normal/BroadcastNormalMsgRecvCrashIT.java b/test/src/test/java/org/apache/rocketmq/test/client/consumer/broadcast/normal/BroadcastNormalMsgRecvCrashIT.java
index 1608e31..18d38ba 100644
--- a/test/src/test/java/org/apache/rocketmq/test/client/consumer/broadcast/normal/BroadcastNormalMsgRecvCrashIT.java
+++ b/test/src/test/java/org/apache/rocketmq/test/client/consumer/broadcast/normal/BroadcastNormalMsgRecvCrashIT.java
@@ -17,7 +17,8 @@
 
 package org.apache.rocketmq.test.client.consumer.broadcast.normal;
 
-import org.apache.log4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.test.client.consumer.broadcast.BaseBroadcast;
 import org.apache.rocketmq.test.client.rmq.RMQBroadCastConsumer;
 import org.apache.rocketmq.test.client.rmq.RMQNormalProducer;
@@ -32,7 +33,7 @@
 import static com.google.common.truth.Truth.assertThat;
 
 public class BroadcastNormalMsgRecvCrashIT extends BaseBroadcast {
-    private static Logger logger = Logger
+    private static Logger logger = LoggerFactory
         .getLogger(NormalMsgTwoSameGroupConsumerIT.class);
     private RMQNormalProducer producer = null;
     private String topic = null;
diff --git a/test/src/test/java/org/apache/rocketmq/test/client/consumer/broadcast/normal/BroadcastNormalMsgRecvFailIT.java b/test/src/test/java/org/apache/rocketmq/test/client/consumer/broadcast/normal/BroadcastNormalMsgRecvFailIT.java
index fab1734..3de55b2 100644
--- a/test/src/test/java/org/apache/rocketmq/test/client/consumer/broadcast/normal/BroadcastNormalMsgRecvFailIT.java
+++ b/test/src/test/java/org/apache/rocketmq/test/client/consumer/broadcast/normal/BroadcastNormalMsgRecvFailIT.java
@@ -17,8 +17,9 @@
 
 package org.apache.rocketmq.test.client.consumer.broadcast.normal;
 
-import org.apache.log4j.Logger;
 import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.test.client.consumer.broadcast.BaseBroadcast;
 import org.apache.rocketmq.test.client.rmq.RMQBroadCastConsumer;
 import org.apache.rocketmq.test.client.rmq.RMQNormalProducer;
@@ -33,7 +34,7 @@
 import static com.google.common.truth.Truth.assertThat;
 
 public class BroadcastNormalMsgRecvFailIT extends BaseBroadcast {
-    private static Logger logger = Logger
+    private static Logger logger = LoggerFactory
         .getLogger(NormalMsgTwoSameGroupConsumerIT.class);
     private RMQNormalProducer producer = null;
     private String topic = null;
diff --git a/test/src/test/java/org/apache/rocketmq/test/client/consumer/broadcast/normal/BroadcastNormalMsgRecvStartLaterIT.java b/test/src/test/java/org/apache/rocketmq/test/client/consumer/broadcast/normal/BroadcastNormalMsgRecvStartLaterIT.java
index f75de14..f66f14d 100644
--- a/test/src/test/java/org/apache/rocketmq/test/client/consumer/broadcast/normal/BroadcastNormalMsgRecvStartLaterIT.java
+++ b/test/src/test/java/org/apache/rocketmq/test/client/consumer/broadcast/normal/BroadcastNormalMsgRecvStartLaterIT.java
@@ -17,7 +17,8 @@
 
 package org.apache.rocketmq.test.client.consumer.broadcast.normal;
 
-import org.apache.log4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.test.client.consumer.broadcast.BaseBroadcast;
 import org.apache.rocketmq.test.client.rmq.RMQBroadCastConsumer;
 import org.apache.rocketmq.test.client.rmq.RMQNormalProducer;
@@ -32,7 +33,7 @@
 import static com.google.common.truth.Truth.assertThat;
 
 public class BroadcastNormalMsgRecvStartLaterIT extends BaseBroadcast {
-    private static Logger logger = Logger
+    private static Logger logger = LoggerFactory
         .getLogger(NormalMsgTwoSameGroupConsumerIT.class);
     private RMQNormalProducer producer = null;
     private String topic = null;
diff --git a/test/src/test/java/org/apache/rocketmq/test/client/consumer/broadcast/normal/BroadcastNormalMsgTwoDiffGroupRecvIT.java b/test/src/test/java/org/apache/rocketmq/test/client/consumer/broadcast/normal/BroadcastNormalMsgTwoDiffGroupRecvIT.java
index ccd77d8..40ea626 100644
--- a/test/src/test/java/org/apache/rocketmq/test/client/consumer/broadcast/normal/BroadcastNormalMsgTwoDiffGroupRecvIT.java
+++ b/test/src/test/java/org/apache/rocketmq/test/client/consumer/broadcast/normal/BroadcastNormalMsgTwoDiffGroupRecvIT.java
@@ -17,7 +17,8 @@
 
 package org.apache.rocketmq.test.client.consumer.broadcast.normal;
 
-import org.apache.log4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.test.client.consumer.broadcast.BaseBroadcast;
 import org.apache.rocketmq.test.client.rmq.RMQBroadCastConsumer;
 import org.apache.rocketmq.test.client.rmq.RMQNormalProducer;
@@ -32,7 +33,7 @@
 import static com.google.common.truth.Truth.assertThat;
 
 public class BroadcastNormalMsgTwoDiffGroupRecvIT extends BaseBroadcast {
-    private static Logger logger = Logger
+    private static Logger logger = LoggerFactory
         .getLogger(NormalMsgTwoSameGroupConsumerIT.class);
     private RMQNormalProducer producer = null;
     private String topic = null;
diff --git a/test/src/test/java/org/apache/rocketmq/test/client/consumer/broadcast/normal/NormalMsgTwoSameGroupConsumerIT.java b/test/src/test/java/org/apache/rocketmq/test/client/consumer/broadcast/normal/NormalMsgTwoSameGroupConsumerIT.java
index d115d58..a875012 100644
--- a/test/src/test/java/org/apache/rocketmq/test/client/consumer/broadcast/normal/NormalMsgTwoSameGroupConsumerIT.java
+++ b/test/src/test/java/org/apache/rocketmq/test/client/consumer/broadcast/normal/NormalMsgTwoSameGroupConsumerIT.java
@@ -17,7 +17,8 @@
 
 package org.apache.rocketmq.test.client.consumer.broadcast.normal;
 
-import org.apache.log4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.test.client.consumer.broadcast.BaseBroadcast;
 import org.apache.rocketmq.test.client.rmq.RMQBroadCastConsumer;
 import org.apache.rocketmq.test.client.rmq.RMQNormalProducer;
@@ -32,7 +33,7 @@
 import static com.google.common.truth.Truth.assertThat;
 
 public class NormalMsgTwoSameGroupConsumerIT extends BaseBroadcast {
-    private static Logger logger = Logger
+    private static Logger logger = LoggerFactory
         .getLogger(NormalMsgTwoSameGroupConsumerIT.class);
     private RMQNormalProducer producer = null;
     private String topic = null;
diff --git a/test/src/test/java/org/apache/rocketmq/test/client/consumer/broadcast/order/OrderMsgBroadcastIT.java b/test/src/test/java/org/apache/rocketmq/test/client/consumer/broadcast/order/OrderMsgBroadcastIT.java
index 6594215..48d9ce9 100644
--- a/test/src/test/java/org/apache/rocketmq/test/client/consumer/broadcast/order/OrderMsgBroadcastIT.java
+++ b/test/src/test/java/org/apache/rocketmq/test/client/consumer/broadcast/order/OrderMsgBroadcastIT.java
@@ -18,8 +18,9 @@
 package org.apache.rocketmq.test.client.consumer.broadcast.order;
 
 import java.util.List;
-import org.apache.log4j.Logger;
 import org.apache.rocketmq.common.message.MessageQueue;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.test.client.consumer.broadcast.BaseBroadcast;
 import org.apache.rocketmq.test.client.rmq.RMQBroadCastConsumer;
 import org.apache.rocketmq.test.client.rmq.RMQNormalProducer;
@@ -39,7 +40,7 @@
  */
 @Ignore
 public class OrderMsgBroadcastIT extends BaseBroadcast {
-    private static Logger logger = Logger.getLogger(OrderMsgBroadcastIT.class);
+    private static Logger logger = LoggerFactory.getLogger(OrderMsgBroadcastIT.class);
     private RMQNormalProducer producer = null;
     private String topic = null;
 
diff --git a/test/src/test/java/org/apache/rocketmq/test/client/consumer/broadcast/tag/BroadcastTwoConsumerFilterIT.java b/test/src/test/java/org/apache/rocketmq/test/client/consumer/broadcast/tag/BroadcastTwoConsumerFilterIT.java
index ea4bc2f..d491181 100644
--- a/test/src/test/java/org/apache/rocketmq/test/client/consumer/broadcast/tag/BroadcastTwoConsumerFilterIT.java
+++ b/test/src/test/java/org/apache/rocketmq/test/client/consumer/broadcast/tag/BroadcastTwoConsumerFilterIT.java
@@ -17,7 +17,8 @@
 
 package org.apache.rocketmq.test.client.consumer.broadcast.tag;
 
-import org.apache.log4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.test.client.consumer.broadcast.BaseBroadcast;
 import org.apache.rocketmq.test.client.rmq.RMQBroadCastConsumer;
 import org.apache.rocketmq.test.client.rmq.RMQNormalProducer;
@@ -32,7 +33,7 @@
 import static com.google.common.truth.Truth.assertThat;
 
 public class BroadcastTwoConsumerFilterIT extends BaseBroadcast {
-    private static Logger logger = Logger.getLogger(BroadcastTwoConsumerSubTagIT.class);
+    private static Logger logger = LoggerFactory.getLogger(BroadcastTwoConsumerSubTagIT.class);
     private RMQNormalProducer producer = null;
     private String topic = null;
 
diff --git a/test/src/test/java/org/apache/rocketmq/test/client/consumer/broadcast/tag/BroadcastTwoConsumerSubDiffTagIT.java b/test/src/test/java/org/apache/rocketmq/test/client/consumer/broadcast/tag/BroadcastTwoConsumerSubDiffTagIT.java
index e170adf..7f4ad3c 100644
--- a/test/src/test/java/org/apache/rocketmq/test/client/consumer/broadcast/tag/BroadcastTwoConsumerSubDiffTagIT.java
+++ b/test/src/test/java/org/apache/rocketmq/test/client/consumer/broadcast/tag/BroadcastTwoConsumerSubDiffTagIT.java
@@ -17,7 +17,8 @@
 
 package org.apache.rocketmq.test.client.consumer.broadcast.tag;
 
-import org.apache.log4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.test.client.consumer.broadcast.BaseBroadcast;
 import org.apache.rocketmq.test.client.rmq.RMQBroadCastConsumer;
 import org.apache.rocketmq.test.client.rmq.RMQNormalProducer;
@@ -32,7 +33,7 @@
 import static com.google.common.truth.Truth.assertThat;
 
 public class BroadcastTwoConsumerSubDiffTagIT extends BaseBroadcast {
-    private static Logger logger = Logger.getLogger(BroadcastTwoConsumerSubTagIT.class);
+    private static Logger logger = LoggerFactory.getLogger(BroadcastTwoConsumerSubTagIT.class);
     private RMQNormalProducer producer = null;
     private String topic = null;
 
diff --git a/test/src/test/java/org/apache/rocketmq/test/client/consumer/broadcast/tag/BroadcastTwoConsumerSubTagIT.java b/test/src/test/java/org/apache/rocketmq/test/client/consumer/broadcast/tag/BroadcastTwoConsumerSubTagIT.java
index 84ceac8..90b7ea8 100644
--- a/test/src/test/java/org/apache/rocketmq/test/client/consumer/broadcast/tag/BroadcastTwoConsumerSubTagIT.java
+++ b/test/src/test/java/org/apache/rocketmq/test/client/consumer/broadcast/tag/BroadcastTwoConsumerSubTagIT.java
@@ -17,7 +17,8 @@
 
 package org.apache.rocketmq.test.client.consumer.broadcast.tag;
 
-import org.apache.log4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.test.client.consumer.broadcast.BaseBroadcast;
 import org.apache.rocketmq.test.client.rmq.RMQBroadCastConsumer;
 import org.apache.rocketmq.test.client.rmq.RMQNormalProducer;
@@ -32,7 +33,7 @@
 import static com.google.common.truth.Truth.assertThat;
 
 public class BroadcastTwoConsumerSubTagIT extends BaseBroadcast {
-    private static Logger logger = Logger.getLogger(BroadcastTwoConsumerSubTagIT.class);
+    private static Logger logger = LoggerFactory.getLogger(BroadcastTwoConsumerSubTagIT.class);
     private RMQNormalProducer producer = null;
     private String topic = null;
 
diff --git a/test/src/test/java/org/apache/rocketmq/test/client/consumer/cluster/DynamicAddAndCrashIT.java b/test/src/test/java/org/apache/rocketmq/test/client/consumer/cluster/DynamicAddAndCrashIT.java
index b927e4a..8ef6d3f 100644
--- a/test/src/test/java/org/apache/rocketmq/test/client/consumer/cluster/DynamicAddAndCrashIT.java
+++ b/test/src/test/java/org/apache/rocketmq/test/client/consumer/cluster/DynamicAddAndCrashIT.java
@@ -17,7 +17,8 @@
 
 package org.apache.rocketmq.test.client.consumer.cluster;
 
-import org.apache.log4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.test.base.BaseConf;
 import org.apache.rocketmq.test.client.consumer.balance.NormalMsgStaticBalanceIT;
 import org.apache.rocketmq.test.client.mq.MQAsyncProducer;
@@ -33,7 +34,7 @@
 import static com.google.common.truth.Truth.assertThat;
 
 public class DynamicAddAndCrashIT extends BaseConf {
-    private static Logger logger = Logger.getLogger(NormalMsgStaticBalanceIT.class);
+    private static Logger logger = LoggerFactory.getLogger(NormalMsgStaticBalanceIT.class);
     private RMQNormalProducer producer = null;
     private String topic = null;
 
diff --git a/test/src/test/java/org/apache/rocketmq/test/client/consumer/cluster/DynamicAddConsumerIT.java b/test/src/test/java/org/apache/rocketmq/test/client/consumer/cluster/DynamicAddConsumerIT.java
index 5f16c75..b84c1b5 100644
--- a/test/src/test/java/org/apache/rocketmq/test/client/consumer/cluster/DynamicAddConsumerIT.java
+++ b/test/src/test/java/org/apache/rocketmq/test/client/consumer/cluster/DynamicAddConsumerIT.java
@@ -17,7 +17,8 @@
 
 package org.apache.rocketmq.test.client.consumer.cluster;
 
-import org.apache.log4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.test.base.BaseConf;
 import org.apache.rocketmq.test.client.consumer.balance.NormalMsgStaticBalanceIT;
 import org.apache.rocketmq.test.client.mq.MQAsyncProducer;
@@ -33,7 +34,7 @@
 import static com.google.common.truth.Truth.assertThat;
 
 public class DynamicAddConsumerIT extends BaseConf {
-    private static Logger logger = Logger.getLogger(NormalMsgStaticBalanceIT.class);
+    private static Logger logger = LoggerFactory.getLogger(NormalMsgStaticBalanceIT.class);
     private RMQNormalProducer producer = null;
     private String topic = null;
 
diff --git a/test/src/test/java/org/apache/rocketmq/test/client/consumer/cluster/DynamicCrashConsumerIT.java b/test/src/test/java/org/apache/rocketmq/test/client/consumer/cluster/DynamicCrashConsumerIT.java
index 5c1d8af..c97f58a 100644
--- a/test/src/test/java/org/apache/rocketmq/test/client/consumer/cluster/DynamicCrashConsumerIT.java
+++ b/test/src/test/java/org/apache/rocketmq/test/client/consumer/cluster/DynamicCrashConsumerIT.java
@@ -17,7 +17,8 @@
 
 package org.apache.rocketmq.test.client.consumer.cluster;
 
-import org.apache.log4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.test.base.BaseConf;
 import org.apache.rocketmq.test.client.consumer.balance.NormalMsgStaticBalanceIT;
 import org.apache.rocketmq.test.client.mq.MQAsyncProducer;
@@ -33,7 +34,7 @@
 import static com.google.common.truth.Truth.assertThat;
 
 public class DynamicCrashConsumerIT extends BaseConf {
-    private static Logger logger = Logger.getLogger(NormalMsgStaticBalanceIT.class);
+    private static Logger logger = LoggerFactory.getLogger(NormalMsgStaticBalanceIT.class);
     private RMQNormalProducer producer = null;
     private String topic = null;
 
diff --git a/test/src/test/java/org/apache/rocketmq/test/client/consumer/filter/SqlFilterIT.java b/test/src/test/java/org/apache/rocketmq/test/client/consumer/filter/SqlFilterIT.java
index 523ac9a..af5a117 100644
--- a/test/src/test/java/org/apache/rocketmq/test/client/consumer/filter/SqlFilterIT.java
+++ b/test/src/test/java/org/apache/rocketmq/test/client/consumer/filter/SqlFilterIT.java
@@ -22,12 +22,13 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import org.apache.log4j.Logger;
 import org.apache.rocketmq.client.consumer.DefaultMQPullConsumer;
 import org.apache.rocketmq.client.consumer.MessageSelector;
 import org.apache.rocketmq.client.consumer.PullResult;
 import org.apache.rocketmq.common.message.MessageExt;
 import org.apache.rocketmq.common.message.MessageQueue;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.test.base.BaseConf;
 import org.apache.rocketmq.test.client.rmq.RMQNormalProducer;
 import org.apache.rocketmq.test.client.rmq.RMQSqlConsumer;
@@ -42,7 +43,7 @@
 import static com.google.common.truth.Truth.assertThat;
 
 public class SqlFilterIT extends BaseConf {
-    private static Logger logger = Logger.getLogger(SqlFilterIT.class);
+    private static Logger logger = LoggerFactory.getLogger(SqlFilterIT.class);
     private RMQNormalProducer producer = null;
     private String topic = null;
     private static final Map<MessageQueue, Long> OFFSE_TABLE = new HashMap<MessageQueue, Long>();
diff --git a/test/src/test/java/org/apache/rocketmq/test/client/consumer/pop/PopSubCheckIT.java b/test/src/test/java/org/apache/rocketmq/test/client/consumer/pop/PopSubCheckIT.java
index beca55e..66c096b 100644
--- a/test/src/test/java/org/apache/rocketmq/test/client/consumer/pop/PopSubCheckIT.java
+++ b/test/src/test/java/org/apache/rocketmq/test/client/consumer/pop/PopSubCheckIT.java
@@ -20,7 +20,8 @@
 import org.apache.rocketmq.common.message.MessageClientExt;
 import org.apache.rocketmq.common.message.MessageConst;
 import org.apache.rocketmq.common.message.MessageRequestMode;
-import org.apache.rocketmq.logging.inner.Logger;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.test.base.BaseConf;
 import org.apache.rocketmq.test.client.rmq.RMQNormalProducer;
 import org.apache.rocketmq.test.client.rmq.RMQPopConsumer;
@@ -39,7 +40,7 @@
 import static com.google.common.truth.Truth.assertThat;
 
 public class PopSubCheckIT extends BaseConf {
-    private static Logger logger = Logger.getLogger(PopSubCheckIT.class);
+    private static final Logger log = LoggerFactory.getLogger(PopSubCheckIT.class);
     private String group;
 
     private DefaultMQAdminExt defaultMQAdminExt;
@@ -63,7 +64,7 @@
     @Test
     public void testNormalPopAck() throws Exception {
         String topic = initTopic();
-        logger.info(String.format("use topic: %s; group: %s !", topic, group));
+        log.info(String.format("use topic: %s; group: %s !", topic, group));
 
         RMQNormalProducer producer = getProducer(NAMESRV_ADDR, topic);
         producer.getProducer().setCompressMsgBodyOverHowmuch(Integer.MAX_VALUE);
@@ -79,7 +80,7 @@
         int msgNum = 1;
         producer.send(msgNum);
         Assert.assertEquals("Not all sent succeeded", msgNum, producer.getAllUndupMsgBody().size());
-        logger.info(producer.getFirstMsg());
+        log.info(producer.getFirstMsg().toString());
 
         TestUtils.waitForSeconds(10);
 
diff --git a/test/src/test/java/org/apache/rocketmq/test/client/consumer/tag/MulTagSubIT.java b/test/src/test/java/org/apache/rocketmq/test/client/consumer/tag/MulTagSubIT.java
index a9fafb7..14d7b80 100644
--- a/test/src/test/java/org/apache/rocketmq/test/client/consumer/tag/MulTagSubIT.java
+++ b/test/src/test/java/org/apache/rocketmq/test/client/consumer/tag/MulTagSubIT.java
@@ -18,7 +18,9 @@
 package org.apache.rocketmq.test.client.consumer.tag;
 
 import java.util.List;
-import org.apache.log4j.Logger;
+
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.test.base.BaseConf;
 import org.apache.rocketmq.test.client.rmq.RMQNormalConsumer;
 import org.apache.rocketmq.test.client.rmq.RMQNormalProducer;
@@ -35,7 +37,7 @@
 import static com.google.common.truth.Truth.assertThat;
 
 public class MulTagSubIT extends BaseConf {
-    private static Logger logger = Logger.getLogger(TagMessageWith1ConsumerIT.class);
+    private static Logger logger = LoggerFactory.getLogger(TagMessageWith1ConsumerIT.class);
     private RMQNormalProducer producer = null;
     private String topic = null;
 
diff --git a/test/src/test/java/org/apache/rocketmq/test/client/consumer/tag/TagMessageWith1ConsumerIT.java b/test/src/test/java/org/apache/rocketmq/test/client/consumer/tag/TagMessageWith1ConsumerIT.java
index a03ac1c..3ca8d06 100644
--- a/test/src/test/java/org/apache/rocketmq/test/client/consumer/tag/TagMessageWith1ConsumerIT.java
+++ b/test/src/test/java/org/apache/rocketmq/test/client/consumer/tag/TagMessageWith1ConsumerIT.java
@@ -18,7 +18,9 @@
 package org.apache.rocketmq.test.client.consumer.tag;
 
 import java.util.List;
-import org.apache.log4j.Logger;
+
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.test.base.BaseConf;
 import org.apache.rocketmq.test.client.rmq.RMQNormalConsumer;
 import org.apache.rocketmq.test.client.rmq.RMQNormalProducer;
@@ -33,7 +35,7 @@
 import static com.google.common.truth.Truth.assertThat;
 
 public class TagMessageWith1ConsumerIT extends BaseConf {
-    private static Logger logger = Logger.getLogger(TagMessageWith1ConsumerIT.class);
+    private static Logger logger = LoggerFactory.getLogger(TagMessageWith1ConsumerIT.class);
     private RMQNormalProducer producer = null;
     private String topic = null;
 
diff --git a/test/src/test/java/org/apache/rocketmq/test/client/consumer/tag/TagMessageWithMulConsumerIT.java b/test/src/test/java/org/apache/rocketmq/test/client/consumer/tag/TagMessageWithMulConsumerIT.java
index 0730bb6..ef7c13b 100644
--- a/test/src/test/java/org/apache/rocketmq/test/client/consumer/tag/TagMessageWithMulConsumerIT.java
+++ b/test/src/test/java/org/apache/rocketmq/test/client/consumer/tag/TagMessageWithMulConsumerIT.java
@@ -19,7 +19,9 @@
 
 import java.util.Collection;
 import java.util.List;
-import org.apache.log4j.Logger;
+
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.test.base.BaseConf;
 import org.apache.rocketmq.test.client.rmq.RMQNormalConsumer;
 import org.apache.rocketmq.test.client.rmq.RMQNormalProducer;
@@ -35,7 +37,7 @@
 import static com.google.common.truth.Truth.assertThat;
 
 public class TagMessageWithMulConsumerIT extends BaseConf {
-    private static Logger logger = Logger.getLogger(TagMessageWith1ConsumerIT.class);
+    private static Logger logger = LoggerFactory.getLogger(TagMessageWith1ConsumerIT.class);
     private RMQNormalProducer producer = null;
     private String topic = null;
 
diff --git a/test/src/test/java/org/apache/rocketmq/test/client/consumer/tag/TagMessageWithSameGroupConsumerIT.java b/test/src/test/java/org/apache/rocketmq/test/client/consumer/tag/TagMessageWithSameGroupConsumerIT.java
index 89ee0d7..0637387 100644
--- a/test/src/test/java/org/apache/rocketmq/test/client/consumer/tag/TagMessageWithSameGroupConsumerIT.java
+++ b/test/src/test/java/org/apache/rocketmq/test/client/consumer/tag/TagMessageWithSameGroupConsumerIT.java
@@ -17,7 +17,8 @@
 
 package org.apache.rocketmq.test.client.consumer.tag;
 
-import org.apache.log4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.test.base.BaseConf;
 import org.apache.rocketmq.test.client.rmq.RMQNormalConsumer;
 import org.apache.rocketmq.test.client.rmq.RMQNormalProducer;
@@ -33,7 +34,7 @@
 import static com.google.common.truth.Truth.assertThat;
 
 public class TagMessageWithSameGroupConsumerIT extends BaseConf {
-    private static Logger logger = Logger.getLogger(TagMessageWith1ConsumerIT.class);
+    private static Logger logger = LoggerFactory.getLogger(TagMessageWith1ConsumerIT.class);
     private RMQNormalProducer producer = null;
     private String topic = null;
     private String tag = "tag";
diff --git a/test/src/test/java/org/apache/rocketmq/test/client/producer/async/AsyncSendExceptionIT.java b/test/src/test/java/org/apache/rocketmq/test/client/producer/async/AsyncSendExceptionIT.java
index 5f5775d..0547241 100644
--- a/test/src/test/java/org/apache/rocketmq/test/client/producer/async/AsyncSendExceptionIT.java
+++ b/test/src/test/java/org/apache/rocketmq/test/client/producer/async/AsyncSendExceptionIT.java
@@ -18,13 +18,14 @@
 package org.apache.rocketmq.test.client.producer.async;
 
 import java.util.List;
-import org.apache.log4j.Logger;
 import org.apache.rocketmq.client.producer.DefaultMQProducer;
 import org.apache.rocketmq.client.producer.MessageQueueSelector;
 import org.apache.rocketmq.client.producer.SendCallback;
 import org.apache.rocketmq.client.producer.SendResult;
 import org.apache.rocketmq.common.message.Message;
 import org.apache.rocketmq.common.message.MessageQueue;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.test.base.BaseConf;
 import org.apache.rocketmq.test.client.consumer.tag.TagMessageWith1ConsumerIT;
 import org.apache.rocketmq.test.factory.ProducerFactory;
@@ -38,7 +39,7 @@
 import static com.google.common.truth.Truth.assertThat;
 
 public class AsyncSendExceptionIT extends BaseConf {
-    private static Logger logger = Logger.getLogger(TagMessageWith1ConsumerIT.class);
+    private static Logger logger = LoggerFactory.getLogger(TagMessageWith1ConsumerIT.class);
     private static boolean sendFail = false;
     private String topic = null;
 
diff --git a/test/src/test/java/org/apache/rocketmq/test/client/producer/async/AsyncSendWithMessageQueueIT.java b/test/src/test/java/org/apache/rocketmq/test/client/producer/async/AsyncSendWithMessageQueueIT.java
index d5cf8b6..2536667 100644
--- a/test/src/test/java/org/apache/rocketmq/test/client/producer/async/AsyncSendWithMessageQueueIT.java
+++ b/test/src/test/java/org/apache/rocketmq/test/client/producer/async/AsyncSendWithMessageQueueIT.java
@@ -17,8 +17,9 @@
 
 package org.apache.rocketmq.test.client.producer.async;
 
-import org.apache.log4j.Logger;
 import org.apache.rocketmq.common.message.MessageQueue;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.test.base.BaseConf;
 import org.apache.rocketmq.test.client.consumer.tag.TagMessageWith1ConsumerIT;
 import org.apache.rocketmq.test.client.rmq.RMQAsyncSendProducer;
@@ -32,7 +33,7 @@
 import static com.google.common.truth.Truth.assertThat;
 
 public class AsyncSendWithMessageQueueIT extends BaseConf {
-    private static Logger logger = Logger.getLogger(TagMessageWith1ConsumerIT.class);
+    private static Logger logger = LoggerFactory.getLogger(TagMessageWith1ConsumerIT.class);
     private RMQAsyncSendProducer producer = null;
     private String topic = null;
 
diff --git a/test/src/test/java/org/apache/rocketmq/test/client/producer/async/AsyncSendWithMessageQueueSelectorIT.java b/test/src/test/java/org/apache/rocketmq/test/client/producer/async/AsyncSendWithMessageQueueSelectorIT.java
index 280d5af..6dd0722 100644
--- a/test/src/test/java/org/apache/rocketmq/test/client/producer/async/AsyncSendWithMessageQueueSelectorIT.java
+++ b/test/src/test/java/org/apache/rocketmq/test/client/producer/async/AsyncSendWithMessageQueueSelectorIT.java
@@ -18,10 +18,11 @@
 package org.apache.rocketmq.test.client.producer.async;
 
 import java.util.List;
-import org.apache.log4j.Logger;
 import org.apache.rocketmq.client.producer.MessageQueueSelector;
 import org.apache.rocketmq.common.message.Message;
 import org.apache.rocketmq.common.message.MessageQueue;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.test.base.BaseConf;
 import org.apache.rocketmq.test.client.consumer.tag.TagMessageWith1ConsumerIT;
 import org.apache.rocketmq.test.client.rmq.RMQAsyncSendProducer;
@@ -35,7 +36,7 @@
 import static com.google.common.truth.Truth.assertThat;
 
 public class AsyncSendWithMessageQueueSelectorIT extends BaseConf {
-    private static Logger logger = Logger.getLogger(TagMessageWith1ConsumerIT.class);
+    private static Logger logger = LoggerFactory.getLogger(TagMessageWith1ConsumerIT.class);
     private RMQAsyncSendProducer producer = null;
     private String topic = null;
 
diff --git a/test/src/test/java/org/apache/rocketmq/test/client/producer/async/AsyncSendWithOnlySendCallBackIT.java b/test/src/test/java/org/apache/rocketmq/test/client/producer/async/AsyncSendWithOnlySendCallBackIT.java
index 4947ef8..8057459 100644
--- a/test/src/test/java/org/apache/rocketmq/test/client/producer/async/AsyncSendWithOnlySendCallBackIT.java
+++ b/test/src/test/java/org/apache/rocketmq/test/client/producer/async/AsyncSendWithOnlySendCallBackIT.java
@@ -17,7 +17,8 @@
 
 package org.apache.rocketmq.test.client.producer.async;
 
-import org.apache.log4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.test.base.BaseConf;
 import org.apache.rocketmq.test.client.consumer.tag.TagMessageWith1ConsumerIT;
 import org.apache.rocketmq.test.client.rmq.RMQAsyncSendProducer;
@@ -31,7 +32,7 @@
 import static com.google.common.truth.Truth.assertThat;
 
 public class AsyncSendWithOnlySendCallBackIT extends BaseConf {
-    private static Logger logger = Logger.getLogger(TagMessageWith1ConsumerIT.class);
+    private static Logger logger = LoggerFactory.getLogger(TagMessageWith1ConsumerIT.class);
     private RMQAsyncSendProducer producer = null;
     private String topic = null;
 
diff --git a/test/src/test/java/org/apache/rocketmq/test/client/producer/batch/BatchSendIT.java b/test/src/test/java/org/apache/rocketmq/test/client/producer/batch/BatchSendIT.java
index 59c8a9e..685957d 100644
--- a/test/src/test/java/org/apache/rocketmq/test/client/producer/batch/BatchSendIT.java
+++ b/test/src/test/java/org/apache/rocketmq/test/client/producer/batch/BatchSendIT.java
@@ -22,7 +22,6 @@
 import java.util.Random;
 import java.util.UUID;
 
-import org.apache.log4j.Logger;
 import org.apache.rocketmq.client.consumer.DefaultMQPullConsumer;
 import org.apache.rocketmq.client.consumer.PullResult;
 import org.apache.rocketmq.client.consumer.PullStatus;
@@ -38,6 +37,8 @@
 import org.apache.rocketmq.common.message.MessageConst;
 import org.apache.rocketmq.common.message.MessageExt;
 import org.apache.rocketmq.common.message.MessageQueue;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.store.DefaultMessageStore;
 import org.apache.rocketmq.test.base.BaseConf;
 import org.apache.rocketmq.test.base.IntegrationTestBase;
@@ -51,7 +52,7 @@
 import org.junit.Test;
 
 public class BatchSendIT extends BaseConf {
-    private static Logger logger = Logger.getLogger(TagMessageWith1ConsumerIT.class);
+    private static Logger logger = LoggerFactory.getLogger(TagMessageWith1ConsumerIT.class);
     private String topic = null;
     private Random random = new Random();
 
diff --git a/test/src/test/java/org/apache/rocketmq/test/client/producer/exception/msg/MessageUserPropIT.java b/test/src/test/java/org/apache/rocketmq/test/client/producer/exception/msg/MessageUserPropIT.java
index cf08849..4505f8c 100644
--- a/test/src/test/java/org/apache/rocketmq/test/client/producer/exception/msg/MessageUserPropIT.java
+++ b/test/src/test/java/org/apache/rocketmq/test/client/producer/exception/msg/MessageUserPropIT.java
@@ -17,8 +17,9 @@
 
 package org.apache.rocketmq.test.client.producer.exception.msg;
 
-import org.apache.log4j.Logger;
 import org.apache.rocketmq.common.message.Message;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.test.base.BaseConf;
 import org.apache.rocketmq.test.client.consumer.balance.NormalMsgStaticBalanceIT;
 import org.apache.rocketmq.test.client.rmq.RMQNormalConsumer;
@@ -32,7 +33,7 @@
 import static com.google.common.truth.Truth.assertThat;
 
 public class MessageUserPropIT extends BaseConf {
-    private static Logger logger = Logger.getLogger(NormalMsgStaticBalanceIT.class);
+    private static Logger logger = LoggerFactory.getLogger(NormalMsgStaticBalanceIT.class);
     private RMQNormalProducer producer = null;
     private String topic = null;
 
diff --git a/test/src/test/java/org/apache/rocketmq/test/client/producer/exception/producer/ProducerGroupAndInstanceNameValidityIT.java b/test/src/test/java/org/apache/rocketmq/test/client/producer/exception/producer/ProducerGroupAndInstanceNameValidityIT.java
index 73d4a79..02104ab 100644
--- a/test/src/test/java/org/apache/rocketmq/test/client/producer/exception/producer/ProducerGroupAndInstanceNameValidityIT.java
+++ b/test/src/test/java/org/apache/rocketmq/test/client/producer/exception/producer/ProducerGroupAndInstanceNameValidityIT.java
@@ -17,7 +17,8 @@
 
 package org.apache.rocketmq.test.client.producer.exception.producer;
 
-import org.apache.log4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.test.base.BaseConf;
 import org.apache.rocketmq.test.client.rmq.RMQNormalProducer;
 import org.apache.rocketmq.test.util.RandomUtils;
@@ -28,7 +29,7 @@
 import static com.google.common.truth.Truth.assertThat;
 
 public class ProducerGroupAndInstanceNameValidityIT extends BaseConf {
-    private static Logger logger = Logger.getLogger(ProducerGroupAndInstanceNameValidityIT.class);
+    private static Logger logger = LoggerFactory.getLogger(ProducerGroupAndInstanceNameValidityIT.class);
     private String topic = null;
 
     @Before
diff --git a/test/src/test/java/org/apache/rocketmq/test/client/producer/oneway/OneWaySendExceptionIT.java b/test/src/test/java/org/apache/rocketmq/test/client/producer/oneway/OneWaySendExceptionIT.java
index ed34dde..af43bcc 100644
--- a/test/src/test/java/org/apache/rocketmq/test/client/producer/oneway/OneWaySendExceptionIT.java
+++ b/test/src/test/java/org/apache/rocketmq/test/client/producer/oneway/OneWaySendExceptionIT.java
@@ -18,11 +18,12 @@
 package org.apache.rocketmq.test.client.producer.oneway;
 
 import java.util.List;
-import org.apache.log4j.Logger;
 import org.apache.rocketmq.client.producer.DefaultMQProducer;
 import org.apache.rocketmq.client.producer.MessageQueueSelector;
 import org.apache.rocketmq.common.message.Message;
 import org.apache.rocketmq.common.message.MessageQueue;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.test.base.BaseConf;
 import org.apache.rocketmq.test.client.consumer.tag.TagMessageWith1ConsumerIT;
 import org.apache.rocketmq.test.factory.ProducerFactory;
@@ -32,7 +33,7 @@
 import org.junit.Test;
 
 public class OneWaySendExceptionIT extends BaseConf {
-    private static Logger logger = Logger.getLogger(TagMessageWith1ConsumerIT.class);
+    private static Logger logger = LoggerFactory.getLogger(TagMessageWith1ConsumerIT.class);
     private static boolean sendFail = false;
     private String topic = null;
 
diff --git a/test/src/test/java/org/apache/rocketmq/test/client/producer/oneway/OneWaySendIT.java b/test/src/test/java/org/apache/rocketmq/test/client/producer/oneway/OneWaySendIT.java
index 5798839..75ba824 100644
--- a/test/src/test/java/org/apache/rocketmq/test/client/producer/oneway/OneWaySendIT.java
+++ b/test/src/test/java/org/apache/rocketmq/test/client/producer/oneway/OneWaySendIT.java
@@ -17,7 +17,8 @@
 
 package org.apache.rocketmq.test.client.producer.oneway;
 
-import org.apache.log4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.test.base.BaseConf;
 import org.apache.rocketmq.test.client.consumer.tag.TagMessageWith1ConsumerIT;
 import org.apache.rocketmq.test.client.rmq.RMQAsyncSendProducer;
@@ -31,7 +32,7 @@
 import static com.google.common.truth.Truth.assertThat;
 
 public class OneWaySendIT extends BaseConf {
-    private static Logger logger = Logger.getLogger(TagMessageWith1ConsumerIT.class);
+    private static Logger logger = LoggerFactory.getLogger(TagMessageWith1ConsumerIT.class);
     private RMQAsyncSendProducer producer = null;
     private String topic = null;
 
diff --git a/test/src/test/java/org/apache/rocketmq/test/client/producer/oneway/OneWaySendWithMQIT.java b/test/src/test/java/org/apache/rocketmq/test/client/producer/oneway/OneWaySendWithMQIT.java
index 9278887..775a6cb 100644
--- a/test/src/test/java/org/apache/rocketmq/test/client/producer/oneway/OneWaySendWithMQIT.java
+++ b/test/src/test/java/org/apache/rocketmq/test/client/producer/oneway/OneWaySendWithMQIT.java
@@ -17,8 +17,9 @@
 
 package org.apache.rocketmq.test.client.producer.oneway;
 
-import org.apache.log4j.Logger;
 import org.apache.rocketmq.common.message.MessageQueue;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.test.base.BaseConf;
 import org.apache.rocketmq.test.client.consumer.tag.TagMessageWith1ConsumerIT;
 import org.apache.rocketmq.test.client.rmq.RMQAsyncSendProducer;
@@ -32,7 +33,7 @@
 import static com.google.common.truth.Truth.assertThat;
 
 public class OneWaySendWithMQIT extends BaseConf {
-    private static Logger logger = Logger.getLogger(TagMessageWith1ConsumerIT.class);
+    private static Logger logger = LoggerFactory.getLogger(TagMessageWith1ConsumerIT.class);
     private static boolean sendFail = false;
     private RMQAsyncSendProducer producer = null;
     private String topic = null;
diff --git a/test/src/test/java/org/apache/rocketmq/test/client/producer/oneway/OneWaySendWithSelectorIT.java b/test/src/test/java/org/apache/rocketmq/test/client/producer/oneway/OneWaySendWithSelectorIT.java
index 3d72af7..15db2ae 100644
--- a/test/src/test/java/org/apache/rocketmq/test/client/producer/oneway/OneWaySendWithSelectorIT.java
+++ b/test/src/test/java/org/apache/rocketmq/test/client/producer/oneway/OneWaySendWithSelectorIT.java
@@ -18,10 +18,11 @@
 package org.apache.rocketmq.test.client.producer.oneway;
 
 import java.util.List;
-import org.apache.log4j.Logger;
 import org.apache.rocketmq.client.producer.MessageQueueSelector;
 import org.apache.rocketmq.common.message.Message;
 import org.apache.rocketmq.common.message.MessageQueue;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.test.base.BaseConf;
 import org.apache.rocketmq.test.client.consumer.tag.TagMessageWith1ConsumerIT;
 import org.apache.rocketmq.test.client.rmq.RMQAsyncSendProducer;
@@ -35,7 +36,7 @@
 import static com.google.common.truth.Truth.assertThat;
 
 public class OneWaySendWithSelectorIT extends BaseConf {
-    private static Logger logger = Logger.getLogger(TagMessageWith1ConsumerIT.class);
+    private static Logger logger = LoggerFactory.getLogger(TagMessageWith1ConsumerIT.class);
     private static boolean sendFail = false;
     private RMQAsyncSendProducer producer = null;
     private String topic = null;
diff --git a/test/src/test/java/org/apache/rocketmq/test/client/producer/order/OrderMsgDynamicRebalanceIT.java b/test/src/test/java/org/apache/rocketmq/test/client/producer/order/OrderMsgDynamicRebalanceIT.java
index ccd04fb..d285b02 100644
--- a/test/src/test/java/org/apache/rocketmq/test/client/producer/order/OrderMsgDynamicRebalanceIT.java
+++ b/test/src/test/java/org/apache/rocketmq/test/client/producer/order/OrderMsgDynamicRebalanceIT.java
@@ -18,8 +18,9 @@
 package org.apache.rocketmq.test.client.producer.order;
 
 import java.util.List;
-import org.apache.log4j.Logger;
 import org.apache.rocketmq.common.message.MessageQueue;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.test.base.BaseConf;
 import org.apache.rocketmq.test.client.consumer.balance.NormalMsgStaticBalanceIT;
 import org.apache.rocketmq.test.client.rmq.RMQNormalConsumer;
@@ -35,7 +36,7 @@
 import static com.google.common.truth.Truth.assertThat;
 
 public class OrderMsgDynamicRebalanceIT extends BaseConf {
-    private static Logger logger = Logger.getLogger(NormalMsgStaticBalanceIT.class);
+    private static Logger logger = LoggerFactory.getLogger(NormalMsgStaticBalanceIT.class);
     private RMQNormalProducer producer = null;
     private String topic = null;
 
diff --git a/test/src/test/java/org/apache/rocketmq/test/client/producer/order/OrderMsgIT.java b/test/src/test/java/org/apache/rocketmq/test/client/producer/order/OrderMsgIT.java
index 7ea4af8..d7689fe 100644
--- a/test/src/test/java/org/apache/rocketmq/test/client/producer/order/OrderMsgIT.java
+++ b/test/src/test/java/org/apache/rocketmq/test/client/producer/order/OrderMsgIT.java
@@ -18,8 +18,9 @@
 package org.apache.rocketmq.test.client.producer.order;
 
 import java.util.List;
-import org.apache.log4j.Logger;
 import org.apache.rocketmq.common.message.MessageQueue;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.test.base.BaseConf;
 import org.apache.rocketmq.test.client.rmq.RMQNormalConsumer;
 import org.apache.rocketmq.test.client.rmq.RMQNormalProducer;
@@ -34,7 +35,7 @@
 import static com.google.common.truth.Truth.assertThat;
 
 public class OrderMsgIT extends BaseConf {
-    private static Logger logger = Logger.getLogger(OrderMsgIT.class);
+    private static Logger logger = LoggerFactory.getLogger(OrderMsgIT.class);
     private RMQNormalProducer producer = null;
     private RMQNormalConsumer consumer = null;
     private String topic = null;
diff --git a/test/src/test/java/org/apache/rocketmq/test/client/producer/order/OrderMsgRebalanceIT.java b/test/src/test/java/org/apache/rocketmq/test/client/producer/order/OrderMsgRebalanceIT.java
index b6e08f3..0bb2ca3 100644
--- a/test/src/test/java/org/apache/rocketmq/test/client/producer/order/OrderMsgRebalanceIT.java
+++ b/test/src/test/java/org/apache/rocketmq/test/client/producer/order/OrderMsgRebalanceIT.java
@@ -18,8 +18,9 @@
 package org.apache.rocketmq.test.client.producer.order;
 
 import java.util.List;
-import org.apache.log4j.Logger;
 import org.apache.rocketmq.common.message.MessageQueue;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.test.base.BaseConf;
 import org.apache.rocketmq.test.client.rmq.RMQNormalConsumer;
 import org.apache.rocketmq.test.client.rmq.RMQNormalProducer;
@@ -35,7 +36,7 @@
 import static com.google.common.truth.Truth.assertThat;
 
 public class OrderMsgRebalanceIT extends BaseConf {
-    private static Logger logger = Logger.getLogger(OrderMsgRebalanceIT.class);
+    private static Logger logger = LoggerFactory.getLogger(OrderMsgRebalanceIT.class);
     private RMQNormalProducer producer = null;
     private String topic = null;
 
diff --git a/test/src/test/java/org/apache/rocketmq/test/client/producer/order/OrderMsgWithTagIT.java b/test/src/test/java/org/apache/rocketmq/test/client/producer/order/OrderMsgWithTagIT.java
index cf385f5..8ee5a9a 100644
--- a/test/src/test/java/org/apache/rocketmq/test/client/producer/order/OrderMsgWithTagIT.java
+++ b/test/src/test/java/org/apache/rocketmq/test/client/producer/order/OrderMsgWithTagIT.java
@@ -18,8 +18,9 @@
 package org.apache.rocketmq.test.client.producer.order;
 
 import java.util.List;
-import org.apache.log4j.Logger;
 import org.apache.rocketmq.common.message.MessageQueue;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.test.base.BaseConf;
 import org.apache.rocketmq.test.client.rmq.RMQNormalConsumer;
 import org.apache.rocketmq.test.client.rmq.RMQNormalProducer;
@@ -34,7 +35,7 @@
 import static com.google.common.truth.Truth.assertThat;
 
 public class OrderMsgWithTagIT extends BaseConf {
-    private static Logger logger = Logger.getLogger(OrderMsgIT.class);
+    private static Logger logger = LoggerFactory.getLogger(OrderMsgIT.class);
     private RMQNormalProducer producer = null;
     private String topic = null;
 
diff --git a/test/src/test/java/org/apache/rocketmq/test/client/producer/querymsg/QueryMsgByIdExceptionIT.java b/test/src/test/java/org/apache/rocketmq/test/client/producer/querymsg/QueryMsgByIdExceptionIT.java
index 97d2c37..0262121 100644
--- a/test/src/test/java/org/apache/rocketmq/test/client/producer/querymsg/QueryMsgByIdExceptionIT.java
+++ b/test/src/test/java/org/apache/rocketmq/test/client/producer/querymsg/QueryMsgByIdExceptionIT.java
@@ -17,8 +17,9 @@
 
 package org.apache.rocketmq.test.client.producer.querymsg;
 
-import org.apache.log4j.Logger;
 import org.apache.rocketmq.common.message.MessageExt;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.test.base.BaseConf;
 import org.apache.rocketmq.test.client.rmq.RMQNormalProducer;
 import org.junit.AfterClass;
@@ -29,7 +30,7 @@
 import static com.google.common.truth.Truth.assertThat;
 
 public class QueryMsgByIdExceptionIT extends BaseConf {
-    private static Logger logger = Logger.getLogger(QueryMsgByKeyIT.class);
+    private static Logger logger = LoggerFactory.getLogger(QueryMsgByKeyIT.class);
     private static RMQNormalProducer producer = null;
     private static String topic = null;
 
diff --git a/test/src/test/java/org/apache/rocketmq/test/client/producer/querymsg/QueryMsgByIdIT.java b/test/src/test/java/org/apache/rocketmq/test/client/producer/querymsg/QueryMsgByIdIT.java
index a0b6527..c4528fd 100644
--- a/test/src/test/java/org/apache/rocketmq/test/client/producer/querymsg/QueryMsgByIdIT.java
+++ b/test/src/test/java/org/apache/rocketmq/test/client/producer/querymsg/QueryMsgByIdIT.java
@@ -17,9 +17,10 @@
 
 package org.apache.rocketmq.test.client.producer.querymsg;
 
-import org.apache.log4j.Logger;
 import org.apache.rocketmq.common.message.MessageClientExt;
 import org.apache.rocketmq.common.message.MessageExt;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.test.base.BaseConf;
 import org.apache.rocketmq.test.client.rmq.RMQNormalConsumer;
 import org.apache.rocketmq.test.client.rmq.RMQNormalProducer;
@@ -34,7 +35,7 @@
 import static com.google.common.truth.Truth.assertThat;
 
 public class QueryMsgByIdIT extends BaseConf {
-    private static Logger logger = Logger.getLogger(QueryMsgByIdIT.class);
+    private static Logger logger = LoggerFactory.getLogger(QueryMsgByIdIT.class);
     private RMQNormalProducer producer = null;
     private RMQNormalConsumer consumer = null;
     private String topic = null;
diff --git a/test/src/test/java/org/apache/rocketmq/test/client/producer/querymsg/QueryMsgByKeyIT.java b/test/src/test/java/org/apache/rocketmq/test/client/producer/querymsg/QueryMsgByKeyIT.java
index cb8310b..921d3a6 100644
--- a/test/src/test/java/org/apache/rocketmq/test/client/producer/querymsg/QueryMsgByKeyIT.java
+++ b/test/src/test/java/org/apache/rocketmq/test/client/producer/querymsg/QueryMsgByKeyIT.java
@@ -19,9 +19,10 @@
 
 import java.util.List;
 
-import org.apache.log4j.Logger;
 import org.apache.rocketmq.client.exception.MQClientException;
 import org.apache.rocketmq.common.message.MessageExt;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.test.base.BaseConf;
 import org.apache.rocketmq.test.client.rmq.RMQNormalProducer;
 import org.apache.rocketmq.test.factory.MQMessageFactory;
@@ -34,7 +35,7 @@
 import static com.google.common.truth.Truth.assertThat;
 
 public class QueryMsgByKeyIT extends BaseConf {
-    private static Logger logger = Logger.getLogger(QueryMsgByKeyIT.class);
+    private static Logger logger = LoggerFactory.getLogger(QueryMsgByKeyIT.class);
     private RMQNormalProducer producer = null;
     private String topic = null;
 
diff --git a/test/src/test/java/org/apache/rocketmq/test/client/producer/transaction/TransactionalMsgIT.java b/test/src/test/java/org/apache/rocketmq/test/client/producer/transaction/TransactionalMsgIT.java
index 3803462..8affb03 100644
--- a/test/src/test/java/org/apache/rocketmq/test/client/producer/transaction/TransactionalMsgIT.java
+++ b/test/src/test/java/org/apache/rocketmq/test/client/producer/transaction/TransactionalMsgIT.java
@@ -17,12 +17,13 @@
 
 package org.apache.rocketmq.test.client.producer.transaction;
 
-import org.apache.log4j.Logger;
 import org.apache.rocketmq.client.producer.LocalTransactionState;
 import org.apache.rocketmq.client.producer.TransactionListener;
 import org.apache.rocketmq.common.Pair;
 import org.apache.rocketmq.common.message.Message;
 import org.apache.rocketmq.common.message.MessageExt;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.test.base.BaseConf;
 import org.apache.rocketmq.test.client.rmq.RMQNormalConsumer;
 import org.apache.rocketmq.test.client.rmq.RMQTransactionalProducer;
@@ -38,7 +39,7 @@
 import java.util.concurrent.ConcurrentHashMap;
 
 public class TransactionalMsgIT extends BaseConf {
-    private static Logger logger = Logger.getLogger(TransactionalMsgIT.class);
+    private static Logger logger = LoggerFactory.getLogger(TransactionalMsgIT.class);
     private RMQTransactionalProducer producer = null;
     private RMQNormalConsumer consumer = null;
     private String topic = null;
diff --git a/test/src/test/java/org/apache/rocketmq/test/container/ContainerIntegrationTestBase.java b/test/src/test/java/org/apache/rocketmq/test/container/ContainerIntegrationTestBase.java
index 03cf621..e4af8c2 100644
--- a/test/src/test/java/org/apache/rocketmq/test/container/ContainerIntegrationTestBase.java
+++ b/test/src/test/java/org/apache/rocketmq/test/container/ContainerIntegrationTestBase.java
@@ -17,8 +17,6 @@
 
 package org.apache.rocketmq.test.container;
 
-import ch.qos.logback.classic.LoggerContext;
-import ch.qos.logback.classic.joran.JoranConfigurator;
 import io.netty.channel.ChannelHandlerContext;
 import java.io.File;
 import java.io.IOException;
@@ -54,8 +52,8 @@
 import org.apache.rocketmq.container.BrokerContainer;
 import org.apache.rocketmq.container.BrokerContainerConfig;
 import org.apache.rocketmq.container.InnerSalveBrokerController;
-import org.apache.rocketmq.logging.InternalLogger;
-import org.apache.rocketmq.logging.InternalLoggerFactory;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.namesrv.NamesrvController;
 import org.apache.rocketmq.remoting.netty.NettyClientConfig;
 import org.apache.rocketmq.remoting.netty.NettyRequestProcessor;
@@ -71,7 +69,6 @@
 import org.apache.rocketmq.tools.admin.DefaultMQAdminExt;
 import org.junit.Assert;
 import org.junit.BeforeClass;
-import org.slf4j.LoggerFactory;
 
 import static org.awaitility.Awaitility.await;
 
@@ -106,7 +103,7 @@
 
     protected static DefaultMQAdminExt defaultMQAdminExt;
 
-    private final static InternalLogger LOG = InternalLoggerFactory.getLogger(ContainerIntegrationTestBase.class);
+    private final static Logger LOG = LoggerFactory.getLogger(ContainerIntegrationTestBase.class);
     private static ConcurrentMap<BrokerConfig, MessageStoreConfig> slaveStoreConfigCache = new ConcurrentHashMap<>();
 
     protected static ConcurrentMap<BrokerConfigLite, BrokerController> isolatedBrokers = new ConcurrentHashMap<>();
@@ -119,16 +116,6 @@
             System.setProperty("rocketmq.broker.diskSpaceCleanForciblyRatio", "0.99");
             System.setProperty("rocketmq.broker.diskSpaceWarningLevelRatio", "0.99");
 
-            LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
-            JoranConfigurator configurator = new JoranConfigurator();
-            configurator.setContext(lc);
-            lc.reset();
-            //https://logback.qos.ch/manual/configuration.html
-            lc.setPackagingDataEnabled(false);
-
-            configurator.doConfigure("../distribution/conf/logback_broker.xml");
-            configurator.doConfigure("../distribution/conf/logback_namesrv.xml");
-
             setUpCluster();
             setUpTopic();
             registerCleaner();
diff --git a/test/src/test/java/org/apache/rocketmq/test/delay/NormalMsgDelayIT.java b/test/src/test/java/org/apache/rocketmq/test/delay/NormalMsgDelayIT.java
index e4f325b..534842a 100644
--- a/test/src/test/java/org/apache/rocketmq/test/delay/NormalMsgDelayIT.java
+++ b/test/src/test/java/org/apache/rocketmq/test/delay/NormalMsgDelayIT.java
@@ -17,7 +17,8 @@
 
 package org.apache.rocketmq.test.delay;
 
-import org.apache.log4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.test.client.rmq.RMQNormalConsumer;
 import org.apache.rocketmq.test.client.rmq.RMQNormalProducer;
 import org.apache.rocketmq.test.factory.MQMessageFactory;
@@ -31,7 +32,7 @@
 import java.util.List;
 
 public class NormalMsgDelayIT extends DelayConf {
-    private static Logger logger = Logger.getLogger(NormalMsgDelayIT.class);
+    private static Logger logger = LoggerFactory.getLogger(NormalMsgDelayIT.class);
     protected int msgSize = 100;
     private RMQNormalProducer producer = null;
     private RMQNormalConsumer consumer = null;
diff --git a/test/src/test/java/org/apache/rocketmq/test/offset/OffsetResetForPopIT.java b/test/src/test/java/org/apache/rocketmq/test/offset/OffsetResetForPopIT.java
index f3301ba..c483702 100644
--- a/test/src/test/java/org/apache/rocketmq/test/offset/OffsetResetForPopIT.java
+++ b/test/src/test/java/org/apache/rocketmq/test/offset/OffsetResetForPopIT.java
@@ -25,7 +25,6 @@
 import java.util.concurrent.Executors;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicInteger;
-import org.apache.log4j.Logger;
 import org.apache.rocketmq.client.consumer.PopResult;
 import org.apache.rocketmq.common.TopicConfig;
 import org.apache.rocketmq.common.message.Message;
@@ -33,6 +32,8 @@
 import org.apache.rocketmq.common.message.MessageExt;
 import org.apache.rocketmq.common.message.MessageQueue;
 import org.apache.rocketmq.remoting.protocol.admin.ConsumeStats;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.test.base.BaseConf;
 import org.apache.rocketmq.test.client.rmq.RMQNormalProducer;
 import org.apache.rocketmq.test.client.rmq.RMQPopConsumer;
@@ -50,7 +51,7 @@
 
 public class OffsetResetForPopIT extends BaseConf {
 
-    private static final Logger LOGGER = Logger.getLogger(OffsetResetForPopIT.class);
+    private static final Logger LOGGER = LoggerFactory.getLogger(OffsetResetForPopIT.class);
 
     private String topic;
     private String group;
diff --git a/test/src/test/java/org/apache/rocketmq/test/offset/OffsetResetIT.java b/test/src/test/java/org/apache/rocketmq/test/offset/OffsetResetIT.java
index 606f571..a83daa7 100644
--- a/test/src/test/java/org/apache/rocketmq/test/offset/OffsetResetIT.java
+++ b/test/src/test/java/org/apache/rocketmq/test/offset/OffsetResetIT.java
@@ -20,7 +20,6 @@
 import java.time.Duration;
 import java.util.List;
 import java.util.Map;
-import org.apache.log4j.Logger;
 import org.apache.rocketmq.broker.BrokerController;
 import org.apache.rocketmq.client.exception.MQClientException;
 import org.apache.rocketmq.common.message.MessageQueue;
@@ -29,6 +28,8 @@
 import org.apache.rocketmq.remoting.protocol.admin.ConsumeStats;
 import org.apache.rocketmq.remoting.protocol.admin.OffsetWrapper;
 import org.apache.rocketmq.remoting.protocol.header.ResetOffsetRequestHeader;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.test.base.BaseConf;
 import org.apache.rocketmq.test.client.rmq.RMQNormalConsumer;
 import org.apache.rocketmq.test.client.rmq.RMQNormalProducer;
@@ -47,7 +48,7 @@
 @FixMethodOrder(MethodSorters.NAME_ASCENDING)
 public class OffsetResetIT extends BaseConf {
 
-    private static final Logger LOGGER = Logger.getLogger(OffsetResetIT.class);
+    private static final Logger LOGGER = LoggerFactory.getLogger(OffsetResetIT.class);
 
     private RMQNormalListener listener = null;
     private RMQNormalProducer producer = null;
diff --git a/test/src/test/java/org/apache/rocketmq/test/smoke/NormalMessageSendAndRecvIT.java b/test/src/test/java/org/apache/rocketmq/test/smoke/NormalMessageSendAndRecvIT.java
index eeddd5b..9b98b78 100644
--- a/test/src/test/java/org/apache/rocketmq/test/smoke/NormalMessageSendAndRecvIT.java
+++ b/test/src/test/java/org/apache/rocketmq/test/smoke/NormalMessageSendAndRecvIT.java
@@ -25,6 +25,8 @@
 import org.apache.rocketmq.common.message.MessageConst;
 import org.apache.rocketmq.common.message.MessageQueue;
 import org.apache.rocketmq.remoting.protocol.admin.ConsumeStats;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.test.base.BaseConf;
 import org.apache.rocketmq.test.client.rmq.RMQNormalConsumer;
 import org.apache.rocketmq.test.client.rmq.RMQNormalProducer;
@@ -36,8 +38,6 @@
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import static com.google.common.truth.Truth.assertThat;
 
diff --git a/test/src/test/java/org/apache/rocketmq/test/statictopic/StaticTopicIT.java b/test/src/test/java/org/apache/rocketmq/test/statictopic/StaticTopicIT.java
index 1bcb422..835d0c8 100644
--- a/test/src/test/java/org/apache/rocketmq/test/statictopic/StaticTopicIT.java
+++ b/test/src/test/java/org/apache/rocketmq/test/statictopic/StaticTopicIT.java
@@ -28,7 +28,6 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import org.apache.log4j.Logger;
 import org.apache.rocketmq.broker.BrokerController;
 import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer;
 import org.apache.rocketmq.client.impl.factory.MQClientInstance;
@@ -44,6 +43,8 @@
 import org.apache.rocketmq.remoting.protocol.statictopic.TopicQueueMappingOne;
 import org.apache.rocketmq.remoting.protocol.statictopic.TopicQueueMappingUtils;
 import org.apache.rocketmq.remoting.rpc.ClientMetadata;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.test.base.BaseConf;
 import org.apache.rocketmq.test.client.rmq.RMQNormalConsumer;
 import org.apache.rocketmq.test.client.rmq.RMQNormalProducer;
@@ -66,7 +67,7 @@
 @FixMethodOrder
 public class StaticTopicIT extends BaseConf {
 
-    private static Logger logger = Logger.getLogger(StaticTopicIT.class);
+    private static Logger logger = LoggerFactory.getLogger(StaticTopicIT.class);
     private DefaultMQAdminExt defaultMQAdminExt;
 
     @Before
diff --git a/test/src/test/resources/log4j.xml b/test/src/test/resources/log4j.xml
deleted file mode 100644
index 7840ab7..0000000
--- a/test/src/test/resources/log4j.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one or more
-  ~ contributor license agreements.  See the NOTICE file distributed with
-  ~ this work for additional information regarding copyright ownership.
-  ~ The ASF licenses this file to You under the Apache License, Version 2.0
-  ~ (the "License"); you may not use this file except in compliance with
-  ~ the License.  You may obtain a copy of the License at
-  ~
-  ~     http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~  Unless required by applicable law or agreed to in writing, software
-  ~  distributed under the License is distributed on an "AS IS" BASIS,
-  ~  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~  See the License for the specific language governing permissions and
-  ~  limitations under the License.
-  -->
-
-<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
-
-<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
-    <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
-        <layout class="org.apache.log4j.PatternLayout">
-            <param name="ConversionPattern" value="%d %p [%F %M %L]: %m%n"/>
-        </layout>
-        <filter class="org.apache.log4j.varia.LevelRangeFilter">
-            <param name="LevelMax" value="ERROR"/>
-            <param name="LevelMin" value="TRACE"/>
-        </filter>
-    </appender>
-
-    <appender name="TOTAL" class="org.apache.log4j.RollingFileAppender">
-        <param name="File" value="target/it_test.log"/>
-        <param name="append" value="false"/>
-        <param name="MaxFileSize" value="10240000"/>
-        <param name="MaxBackupIndex" value="10"/>
-        <layout class="org.apache.log4j.PatternLayout">
-            <param name="ConversionPattern" value="%d - %c -%-4r [%t] %-5p %x - %m%n"/>
-        </layout>
-    </appender>
-
-    <root>
-        <level value="OFF"/>
-        <appender-ref ref="TOTAL"/>
-    </root>
-</log4j:configuration>
diff --git a/test/src/test/resources/logback-test.xml b/test/src/test/resources/logback-test.xml
deleted file mode 100644
index 2f00e3c..0000000
--- a/test/src/test/resources/logback-test.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one or more
-  ~ contributor license agreements.  See the NOTICE file distributed with
-  ~ this work for additional information regarding copyright ownership.
-  ~ The ASF licenses this file to You under the Apache License, Version 2.0
-  ~ (the "License"); you may not use this file except in compliance with
-  ~ the License.  You may obtain a copy of the License at
-  ~
-  ~     http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~  Unless required by applicable law or agreed to in writing, software
-  ~  distributed under the License is distributed on an "AS IS" BASIS,
-  ~  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~  See the License for the specific language governing permissions and
-  ~  limitations under the License.
-  -->
-
-<configuration>
-
-    <appender name="DefaultAppender" class="ch.qos.logback.core.ConsoleAppender">
-        <append>true</append>
-        <encoder>
-            <pattern>%d{yyy-MM-dd HH:mm:ss,GMT+8} %p %t - %m%n</pattern>
-            <charset class="java.nio.charset.Charset">UTF-8</charset>
-        </encoder>
-    </appender>
-
-    <root>
-        <level value="ERROR"/>
-        <appender-ref ref="DefaultAppender"/>
-    </root>
-</configuration>
diff --git a/store/src/test/resources/logback-test.xml b/test/src/test/resources/rmq.logback-test.xml
similarity index 64%
copy from store/src/test/resources/logback-test.xml
copy to test/src/test/resources/rmq.logback-test.xml
index a033816..c3ec0d1 100644
--- a/store/src/test/resources/logback-test.xml
+++ b/test/src/test/resources/rmq.logback-test.xml
@@ -17,19 +17,20 @@
   -->
 <configuration>
 
-    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
-        <encoder>
-            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n</pattern>
-            <charset class="java.nio.charset.Charset">UTF-8</charset>
-        </encoder>
+    <appender name="CONSOLE" class="org.apache.rocketmq.shade.ch.qos.logback.core.ConsoleAppender">
+        <layout class="org.apache.rocketmq.shade.ch.qos.logback.classic.PatternLayout">
+            <Pattern>
+                %d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n
+            </Pattern>
+        </layout>
     </appender>
 
-    <logger name="org.apache.rocketmq.store" level="WARN" additivity="false">
-        <appender-ref ref="STDOUT"/>
+    <logger name="org.apache.rocketmq" level="error" additivity="false">
+        <appender-ref ref="CONSOLE"/>
     </logger>
 
-    <root level="OFF">
-        <appender-ref ref="STDOUT"/>
+    <root level="error">
+        <appender-ref ref="CONSOLE"/>
     </root>
 
-</configuration>
+</configuration>
\ No newline at end of file
diff --git a/tools/BUILD.bazel b/tools/BUILD.bazel
index 51bfdca..8aea42f 100644
--- a/tools/BUILD.bazel
+++ b/tools/BUILD.bazel
@@ -23,7 +23,6 @@
     deps = [
         "//acl",
         "//remoting",
-        "//logging", 
         "//client",    
         "//common",   
         "//srvutil",
@@ -38,6 +37,8 @@
         "@maven//:ch_qos_logback_logback_classic",
         "@maven//:ch_qos_logback_logback_core",     
         "@maven//:commons_collections_commons_collections",
+        "@maven//:io_github_aliyun_mq_rocketmq_slf4j_api",
+        "@maven//:io_github_aliyun_mq_rocketmq_logback_classic",
     ],
 )
 
@@ -56,7 +57,7 @@
         "@maven//:io_netty_netty_all",      
         "@maven//:commons_cli_commons_cli",         
     ],
-    resources = glob(["src/test/resources/certs/*.pem"]) + glob(["src/test/resources/certs/*.key"])
+    resources = glob(["src/test/resources/*.xml"]),
 )
 
 GenTestRules(
diff --git a/tools/pom.xml b/tools/pom.xml
index 83329ca..177da83 100644
--- a/tools/pom.xml
+++ b/tools/pom.xml
@@ -35,24 +35,23 @@
         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>rocketmq-client</artifactId>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>rocketmq-acl</artifactId>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>rocketmq-srvutil</artifactId>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>com.alibaba</groupId>
             <artifactId>fastjson</artifactId>
         </dependency>
         <dependency>
-            <groupId>ch.qos.logback</groupId>
-            <artifactId>logback-classic</artifactId>
-        </dependency>
-        <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-lang3</artifactId>
         </dependency>
diff --git a/tools/src/main/java/org/apache/rocketmq/tools/admin/DefaultMQAdminExtImpl.java b/tools/src/main/java/org/apache/rocketmq/tools/admin/DefaultMQAdminExtImpl.java
index 3b20a73..f0cabbe 100644
--- a/tools/src/main/java/org/apache/rocketmq/tools/admin/DefaultMQAdminExtImpl.java
+++ b/tools/src/main/java/org/apache/rocketmq/tools/admin/DefaultMQAdminExtImpl.java
@@ -45,7 +45,6 @@
 import org.apache.rocketmq.client.exception.MQClientException;
 import org.apache.rocketmq.client.impl.MQClientManager;
 import org.apache.rocketmq.client.impl.factory.MQClientInstance;
-import org.apache.rocketmq.client.log.ClientLogger;
 import org.apache.rocketmq.common.AclConfig;
 import org.apache.rocketmq.common.KeyBuilder;
 import org.apache.rocketmq.common.MixAll;
@@ -63,7 +62,6 @@
 import org.apache.rocketmq.common.message.MessageRequestMode;
 import org.apache.rocketmq.common.namesrv.NamesrvUtil;
 import org.apache.rocketmq.common.utils.NetworkUtil;
-import org.apache.rocketmq.logging.InternalLogger;
 import org.apache.rocketmq.remoting.RPCHook;
 import org.apache.rocketmq.remoting.exception.RemotingCommandException;
 import org.apache.rocketmq.remoting.exception.RemotingConnectException;
@@ -108,6 +106,8 @@
 import org.apache.rocketmq.remoting.protocol.statictopic.TopicQueueMappingDetail;
 import org.apache.rocketmq.remoting.protocol.subscription.GroupForbidden;
 import org.apache.rocketmq.remoting.protocol.subscription.SubscriptionGroupConfig;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.tools.admin.api.BrokerOperatorResult;
 import org.apache.rocketmq.tools.admin.api.MessageTrack;
 import org.apache.rocketmq.tools.admin.api.TrackType;
@@ -138,7 +138,7 @@
         SYSTEM_GROUP_SET.add(MixAll.CID_SYS_RMQ_TRANS);
     }
 
-    private final InternalLogger log = ClientLogger.getLog();
+    private final Logger logger = LoggerFactory.getLogger(DefaultMQAdminExtImpl.class);
     private final DefaultMQAdminExt defaultMQAdminExt;
     private ServiceState serviceState = ServiceState.CREATE_JUST;
     private MQClientInstance mqClientInstance;
@@ -180,7 +180,7 @@
 
                 mqClientInstance.start();
 
-                log.info("the adminExt [{}] start OK", this.defaultMQAdminExt.getAdminExtGroup());
+                logger.info("the adminExt [{}] start OK", this.defaultMQAdminExt.getAdminExtGroup());
 
                 this.serviceState = ServiceState.RUNNING;
 
@@ -207,7 +207,7 @@
                 this.mqClientInstance.unregisterAdminExt(this.defaultMQAdminExt.getAdminExtGroup());
                 this.mqClientInstance.shutdown();
 
-                log.info("the adminExt [{}] shutdown OK", this.defaultMQAdminExt.getAdminExtGroup());
+                logger.info("the adminExt [{}] shutdown OK", this.defaultMQAdminExt.getAdminExtGroup());
                 this.serviceState = ServiceState.SHUTDOWN_ALREADY;
                 this.threadPoolExecutor.shutdown();
                 break;
@@ -234,7 +234,7 @@
         try {
             return handler.doExecute();
         } catch (RemotingException e) {
-            log.error("", e);
+            logger.error("", e);
             return AdminToolResult.failure(AdminToolsResultCodeEnum.REMOTING_ERROR, e.getMessage());
         } catch (MQClientException e) {
             if (ResponseCode.TOPIC_NOT_EXIST == e.getResponseCode()) {
@@ -370,7 +370,7 @@
                                     topicStatsTable.getOffsetTable().putAll(tst.getOffsetTable());
                                 }
                             } catch (Exception e) {
-                                log.error("getTopicStatsInfo error. topic={}", topic, e);
+                                logger.error("getTopicStatsInfo error. topic={}", topic, e);
                             } finally {
                                 latch.countDown();
                             }
@@ -533,7 +533,7 @@
                                     consumerTpsMap.put(addr, consumeStats.getConsumeTps());
                                 }
                             } catch (Exception e) {
-                                log.error("getConsumeStats error. topic={}, consumerGroup={}", topic, consumerGroup, e);
+                                logger.error("getConsumeStats error. topic={}, consumerGroup={}", topic, consumerGroup, e);
                             } finally {
                                 latch.countDown();
                             }
@@ -573,7 +573,7 @@
             MessageDecoder.decodeMessageId(msgId);
             return this.viewMessage(msgId);
         } catch (Exception e) {
-            log.warn("the msgId maybe created by new client. msgId={}", msgId, e);
+            logger.warn("the msgId maybe created by new client. msgId={}", msgId, e);
         }
         return this.mqClientInstance.getMQAdminImpl().queryMessageByUniqKey(topic, msgId);
     }
@@ -585,7 +585,7 @@
             MessageDecoder.decodeMessageId(msgId);
             return this.viewMessage(msgId);
         } catch (Exception e) {
-            log.warn("the msgId maybe created by new client. msgId={}", msgId, e);
+            logger.warn("the msgId maybe created by new client. msgId={}", msgId, e);
         }
         return this.mqClientInstance.getMQAdminImpl().queryMessageByUniqKey(clusterName, topic, msgId);
     }
@@ -607,7 +607,7 @@
         }
 
         if (result.getConnectionSet().isEmpty()) {
-            log.warn("the consumer group not online. brokerAddr={}, group={}", addr, consumerGroup);
+            logger.warn("the consumer group not online. brokerAddr={}, group={}", addr, consumerGroup);
             throw new MQClientException(ResponseCode.CONSUMER_NOT_ONLINE, "Not found the consumer group connection");
         }
 
@@ -622,7 +622,7 @@
             this.mqClientInstance.getMQClientAPIImpl().getConsumerConnectionList(brokerAddr, consumerGroup, timeoutMillis);
 
         if (result.getConnectionSet().isEmpty()) {
-            log.warn("the consumer group not online. brokerAddr={}, group={}", brokerAddr, consumerGroup);
+            logger.warn("the consumer group not online. brokerAddr={}, group={}", brokerAddr, consumerGroup);
             throw new MQClientException(ResponseCode.CONSUMER_NOT_ONLINE, "Not found the consumer group connection");
         }
 
@@ -644,7 +644,7 @@
         }
 
         if (result.getConnectionSet().isEmpty()) {
-            log.warn("the producer group not online. brokerAddr={}, group={}", addr, producerGroup);
+            logger.warn("the producer group not online. brokerAddr={}, group={}", addr, producerGroup);
             throw new MQClientException("Not found the producer group connection", null);
         }
 
@@ -725,7 +725,7 @@
                         mqClientInstance.getMQClientAPIImpl().deleteTopicInBroker(addr, topic, timeoutMillis);
                         successList.add(addr);
                     } catch (Exception e) {
-                        log.error("deleteTopicInBroker error. topic={}, broker={}", topic, addr, e);
+                        logger.error("deleteTopicInBroker error. topic={}, broker={}", topic, addr, e);
                         failureList.add(addr);
                     } finally {
                         latch.countDown();
@@ -888,7 +888,7 @@
                                         resetOffsetByTimestampOld(addr, topicRouteMap.get(bd.getBrokerName()), group, topic, timestamp, true);
                                         successList.add(addr);
                                     } catch (Exception e2) {
-                                        log.error(MessageFormat.format("resetOffsetByTimestampOld error. addr={0}, topic={1}, group={2},timestamp={3}", addr, topic, group, timestamp), e);
+                                        logger.error(MessageFormat.format("resetOffsetByTimestampOld error. addr={0}, topic={1}, group={2},timestamp={3}", addr, topic, group, timestamp), e);
                                         failureList.add(addr);
                                     }
                                 } else if (ResponseCode.SYSTEM_ERROR == e.getResponseCode()) {
@@ -896,11 +896,11 @@
                                     successList.add(addr);
                                 } else {
                                     failureList.add(addr);
-                                    log.error(MessageFormat.format("resetOffsetNewConcurrent error. addr={0}, topic={1}, group={2},timestamp={3}", addr, topic, group, timestamp), e);
+                                    logger.error(MessageFormat.format("resetOffsetNewConcurrent error. addr={0}, topic={1}, group={2},timestamp={3}", addr, topic, group, timestamp), e);
                                 }
                             } catch (Exception e) {
                                 failureList.add(addr);
-                                log.error(MessageFormat.format("resetOffsetNewConcurrent error. addr={0}, topic={1}, group={2},timestamp={3}", addr, topic, group, timestamp), e);
+                                logger.error(MessageFormat.format("resetOffsetNewConcurrent error. addr={0}, topic={1}, group={2},timestamp={3}", addr, topic, group, timestamp), e);
                             } finally {
                                 latch.countDown();
                             }
@@ -1090,7 +1090,7 @@
                                     result.getTopicList().addAll(topicList.getTopicList());
                                 }
                             } catch (Exception e) {
-                                log.error("queryTopicsByConsumer error. group={}", group, e);
+                                logger.error("queryTopicsByConsumer error. group={}", group, e);
                             } finally {
                                 latch.countDown();
                             }
@@ -1140,7 +1140,7 @@
                                     spanSet.addAll(mqClientInstance.getMQClientAPIImpl().queryConsumeTimeSpan(addr, topic, group, timeoutMillis));
                                 }
                             } catch (Exception e) {
-                                log.error("queryConsumeTimeSpan error. topic={}, group={}", topic, group, e);
+                                logger.error("queryConsumeTimeSpan error. topic={}, group={}", topic, group, e);
                             } finally {
                                 latch.countDown();
                             }
@@ -1168,7 +1168,7 @@
                 result = cleanExpiredConsumerQueueByCluster(clusterInfo, cluster);
             }
         } catch (MQBrokerException e) {
-            log.error("cleanExpiredConsumerQueue error.", e);
+            logger.error("cleanExpiredConsumerQueue error.", e);
         }
 
         return result;
@@ -1188,7 +1188,7 @@
     public boolean cleanExpiredConsumerQueueByAddr(
         String addr) throws RemotingConnectException, RemotingSendRequestException, RemotingTimeoutException, MQClientException, InterruptedException {
         boolean result = mqClientInstance.getMQClientAPIImpl().cleanExpiredConsumeQueue(addr, timeoutMillis);
-        log.warn("clean expired ConsumeQueue on target broker={}, execute result={}", addr, result);
+        logger.warn("clean expired ConsumeQueue on target broker={}, execute result={}", addr, result);
         return result;
     }
 
@@ -1206,7 +1206,7 @@
                 result = deleteExpiredCommitLogByCluster(clusterInfo, cluster);
             }
         } catch (MQBrokerException e) {
-            log.error("deleteExpiredCommitLog error.", e);
+            logger.error("deleteExpiredCommitLog error.", e);
         }
 
         return result;
@@ -1227,7 +1227,7 @@
     public boolean deleteExpiredCommitLogByAddr(
         String addr) throws RemotingConnectException, RemotingSendRequestException, RemotingTimeoutException, MQClientException, InterruptedException {
         boolean result = mqClientInstance.getMQClientAPIImpl().deleteExpiredCommitLog(addr, timeoutMillis);
-        log.warn("Delete expired CommitLog on target broker={}, execute result={}", addr, result);
+        logger.warn("Delete expired CommitLog on target broker={}, execute result={}", addr, result);
         return result;
     }
 
@@ -1245,7 +1245,7 @@
                 result = cleanUnusedTopicByCluster(clusterInfo, cluster);
             }
         } catch (MQBrokerException e) {
-            log.error("cleanExpiredConsumerQueue error.", e);
+            logger.error("cleanExpiredConsumerQueue error.", e);
         }
 
         return result;
@@ -1265,7 +1265,7 @@
     public boolean cleanUnusedTopicByAddr(
         String addr) throws RemotingConnectException, RemotingSendRequestException, RemotingTimeoutException, MQClientException, InterruptedException {
         boolean result = mqClientInstance.getMQClientAPIImpl().cleanUnusedTopicByAddr(addr, timeoutMillis);
-        log.warn("clean unused topic on target broker={}, execute result={}", addr, result);
+        logger.warn("clean unused topic on target broker={}, execute result={}", addr, result);
         return result;
     }
 
@@ -1785,7 +1785,7 @@
                 .invokeBrokerToResetOffset(brokerAddr, topicName, consumeGroup, 0, queueId, resetOffset, timeoutMillis);
             if (null != result) {
                 for (Map.Entry<MessageQueue, Long> entry : result.entrySet()) {
-                    log.info("Reset single message queue {} offset from {} to {}",
+                    logger.info("Reset single message queue {} offset from {} to {}",
                         JSON.toJSONString(entry.getKey()), entry.getValue(), resetOffset);
                 }
             }
diff --git a/tools/src/main/java/org/apache/rocketmq/tools/command/MQAdminStartup.java b/tools/src/main/java/org/apache/rocketmq/tools/command/MQAdminStartup.java
index b98fc3b..00c027f 100644
--- a/tools/src/main/java/org/apache/rocketmq/tools/command/MQAdminStartup.java
+++ b/tools/src/main/java/org/apache/rocketmq/tools/command/MQAdminStartup.java
@@ -16,10 +16,6 @@
  */
 package org.apache.rocketmq.tools.command;
 
-import ch.qos.logback.classic.LoggerContext;
-import ch.qos.logback.classic.joran.JoranConfigurator;
-import java.nio.file.Files;
-import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.List;
 import org.apache.commons.cli.CommandLine;
@@ -103,7 +99,6 @@
 import org.apache.rocketmq.tools.command.topic.UpdateStaticTopicSubCommand;
 import org.apache.rocketmq.tools.command.topic.UpdateTopicPermSubCommand;
 import org.apache.rocketmq.tools.command.topic.UpdateTopicSubCommand;
-import org.slf4j.LoggerFactory;
 
 public class MQAdminStartup {
     protected static final List<SubCommand> SUB_COMMANDS = new ArrayList<>();
@@ -123,7 +118,6 @@
         initCommand();
 
         try {
-            initLogback();
             switch (args.length) {
                 case 0:
                     printHelp();
@@ -271,19 +265,6 @@
         initCommand(new DumpCompactionLogCommand());
     }
 
-    private static void initLogback() throws Exception {
-        LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
-        JoranConfigurator configurator = new JoranConfigurator();
-        configurator.setContext(lc);
-        lc.reset();
-
-        //avoid the exception
-        if (ROCKETMQ_HOME != null
-            && Files.exists(Paths.get(ROCKETMQ_HOME + "/conf/logback_tools.xml"))) {
-            configurator.doConfigure(ROCKETMQ_HOME + "/conf/logback_tools.xml");
-        }
-    }
-
     private static void printHelp() {
         System.out.printf("The most commonly used mqadmin commands are:%n");
 
diff --git a/tools/src/main/java/org/apache/rocketmq/tools/command/consumer/ConsumerProgressSubCommand.java b/tools/src/main/java/org/apache/rocketmq/tools/command/consumer/ConsumerProgressSubCommand.java
index a49b9e3..cd8d5fe 100644
--- a/tools/src/main/java/org/apache/rocketmq/tools/command/consumer/ConsumerProgressSubCommand.java
+++ b/tools/src/main/java/org/apache/rocketmq/tools/command/consumer/ConsumerProgressSubCommand.java
@@ -25,12 +25,10 @@
 import org.apache.commons.cli.CommandLine;
 import org.apache.commons.cli.Option;
 import org.apache.commons.cli.Options;
-import org.apache.rocketmq.client.log.ClientLogger;
 import org.apache.rocketmq.common.MQVersion;
 import org.apache.rocketmq.common.MixAll;
 import org.apache.rocketmq.common.UtilAll;
 import org.apache.rocketmq.common.message.MessageQueue;
-import org.apache.rocketmq.logging.InternalLogger;
 import org.apache.rocketmq.remoting.RPCHook;
 import org.apache.rocketmq.remoting.protocol.admin.ConsumeStats;
 import org.apache.rocketmq.remoting.protocol.admin.OffsetWrapper;
@@ -40,12 +38,14 @@
 import org.apache.rocketmq.remoting.protocol.body.TopicList;
 import org.apache.rocketmq.remoting.protocol.heartbeat.ConsumeType;
 import org.apache.rocketmq.remoting.protocol.heartbeat.MessageModel;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.tools.admin.DefaultMQAdminExt;
 import org.apache.rocketmq.tools.command.SubCommand;
 import org.apache.rocketmq.tools.command.SubCommandException;
 
 public class ConsumerProgressSubCommand implements SubCommand {
-    private final InternalLogger log = ClientLogger.getLog();
+    private static final Logger log = LoggerFactory.getLogger(ConsumerProgressSubCommand.class);
 
     @Override
     public String commandName() {
diff --git a/tools/src/main/java/org/apache/rocketmq/tools/command/consumer/StartMonitoringSubCommand.java b/tools/src/main/java/org/apache/rocketmq/tools/command/consumer/StartMonitoringSubCommand.java
index bb66e89..2d08d0b 100644
--- a/tools/src/main/java/org/apache/rocketmq/tools/command/consumer/StartMonitoringSubCommand.java
+++ b/tools/src/main/java/org/apache/rocketmq/tools/command/consumer/StartMonitoringSubCommand.java
@@ -18,8 +18,6 @@
 
 import org.apache.commons.cli.CommandLine;
 import org.apache.commons.cli.Options;
-import org.apache.rocketmq.client.log.ClientLogger;
-import org.apache.rocketmq.logging.InternalLogger;
 import org.apache.rocketmq.remoting.RPCHook;
 import org.apache.rocketmq.tools.command.SubCommand;
 import org.apache.rocketmq.tools.command.SubCommandException;
@@ -28,7 +26,6 @@
 import org.apache.rocketmq.tools.monitor.MonitorService;
 
 public class StartMonitoringSubCommand implements SubCommand {
-    private final InternalLogger log = ClientLogger.getLog();
 
     @Override
     public String commandName() {
diff --git a/tools/src/main/java/org/apache/rocketmq/tools/monitor/DefaultMonitorListener.java b/tools/src/main/java/org/apache/rocketmq/tools/monitor/DefaultMonitorListener.java
index 6156230..79f80b6 100644
--- a/tools/src/main/java/org/apache/rocketmq/tools/monitor/DefaultMonitorListener.java
+++ b/tools/src/main/java/org/apache/rocketmq/tools/monitor/DefaultMonitorListener.java
@@ -20,36 +20,36 @@
 import java.util.Iterator;
 import java.util.Map.Entry;
 import java.util.TreeMap;
-import org.apache.rocketmq.client.log.ClientLogger;
-import org.apache.rocketmq.logging.InternalLogger;
 import org.apache.rocketmq.remoting.protocol.body.ConsumerRunningInfo;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 
 public class DefaultMonitorListener implements MonitorListener {
     private final static String LOG_PREFIX = "[MONITOR] ";
     private final static String LOG_NOTIFY = LOG_PREFIX + " [NOTIFY] ";
-    private final InternalLogger log = ClientLogger.getLog();
+    private final Logger logger = LoggerFactory.getLogger(DefaultMonitorListener.class);
 
     public DefaultMonitorListener() {
     }
 
     @Override
     public void beginRound() {
-        log.info(LOG_PREFIX + "=========================================beginRound");
+        logger.info(LOG_PREFIX + "=========================================beginRound");
     }
 
     @Override
     public void reportUndoneMsgs(UndoneMsgs undoneMsgs) {
-        log.info(String.format(LOG_PREFIX + "reportUndoneMsgs: %s", undoneMsgs));
+        logger.info(String.format(LOG_PREFIX + "reportUndoneMsgs: %s", undoneMsgs));
     }
 
     @Override
     public void reportFailedMsgs(FailedMsgs failedMsgs) {
-        log.info(String.format(LOG_PREFIX + "reportFailedMsgs: %s", failedMsgs));
+        logger.info(String.format(LOG_PREFIX + "reportFailedMsgs: %s", failedMsgs));
     }
 
     @Override
     public void reportDeleteMsgsEvent(DeleteMsgsEvent deleteMsgsEvent) {
-        log.info(String.format(LOG_PREFIX + "reportDeleteMsgsEvent: %s", deleteMsgsEvent));
+        logger.info(String.format(LOG_PREFIX + "reportDeleteMsgsEvent: %s", deleteMsgsEvent));
     }
 
     @Override
@@ -58,7 +58,7 @@
         {
             boolean result = ConsumerRunningInfo.analyzeSubscription(criTable);
             if (!result) {
-                log.info(String.format(LOG_NOTIFY
+                logger.info(String.format(LOG_NOTIFY
                     + "reportConsumerRunningInfo: ConsumerGroup: %s, Subscription different", criTable
                     .firstEntry().getValue().getProperties().getProperty("consumerGroup")));
             }
@@ -70,7 +70,7 @@
                 Entry<String, ConsumerRunningInfo> next = it.next();
                 String result = ConsumerRunningInfo.analyzeProcessQueue(next.getKey(), next.getValue());
                 if (!result.isEmpty()) {
-                    log.info(String.format(LOG_NOTIFY
+                    logger.info(String.format(LOG_NOTIFY
                             + "reportConsumerRunningInfo: ConsumerGroup: %s, ClientId: %s, %s",
                         criTable.firstEntry().getValue().getProperties().getProperty("consumerGroup"),
                         next.getKey(),
@@ -82,6 +82,6 @@
 
     @Override
     public void endRound() {
-        log.info(LOG_PREFIX + "=========================================endRound");
+        logger.info(LOG_PREFIX + "=========================================endRound");
     }
 }
diff --git a/tools/src/main/java/org/apache/rocketmq/tools/monitor/MonitorService.java b/tools/src/main/java/org/apache/rocketmq/tools/monitor/MonitorService.java
index 5c33e8b..dbb2f13 100644
--- a/tools/src/main/java/org/apache/rocketmq/tools/monitor/MonitorService.java
+++ b/tools/src/main/java/org/apache/rocketmq/tools/monitor/MonitorService.java
@@ -34,14 +34,12 @@
 import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently;
 import org.apache.rocketmq.client.exception.MQBrokerException;
 import org.apache.rocketmq.client.exception.MQClientException;
-import org.apache.rocketmq.client.log.ClientLogger;
 import org.apache.rocketmq.common.MQVersion;
 import org.apache.rocketmq.common.MixAll;
 import org.apache.rocketmq.common.ThreadFactoryImpl;
 import org.apache.rocketmq.common.message.MessageExt;
 import org.apache.rocketmq.common.message.MessageQueue;
 import org.apache.rocketmq.common.topic.TopicValidator;
-import org.apache.rocketmq.logging.InternalLogger;
 import org.apache.rocketmq.remoting.RPCHook;
 import org.apache.rocketmq.remoting.exception.RemotingException;
 import org.apache.rocketmq.remoting.protocol.admin.ConsumeStats;
@@ -51,10 +49,12 @@
 import org.apache.rocketmq.remoting.protocol.body.ConsumerRunningInfo;
 import org.apache.rocketmq.remoting.protocol.body.TopicList;
 import org.apache.rocketmq.remoting.protocol.topic.OffsetMovedEvent;
+import org.apache.rocketmq.shade.org.slf4j.Logger;
+import org.apache.rocketmq.shade.org.slf4j.LoggerFactory;
 import org.apache.rocketmq.tools.admin.DefaultMQAdminExt;
 
 public class MonitorService {
-    private final InternalLogger log = ClientLogger.getLog();
+    private final Logger logger = LoggerFactory.getLogger(MonitorService.class);
     private final ScheduledExecutorService scheduledExecutorService = Executors
         .newSingleThreadScheduledExecutor(new ThreadFactoryImpl("MonitorService"));
 
@@ -159,7 +159,7 @@
                 try {
                     MonitorService.this.doMonitorWork();
                 } catch (Exception e) {
-                    log.error("doMonitorWork Exception", e);
+                    logger.error("doMonitorWork Exception", e);
                 }
             }
         }, 1000 * 20, this.monitorConfig.getRoundInterval(), TimeUnit.MILLISECONDS);
@@ -189,7 +189,7 @@
         }
         this.monitorListener.endRound();
         long spentTimeMills = System.currentTimeMillis() - beginTime;
-        log.info("Execute one round monitor work, spent timemills: {}", spentTimeMills);
+        logger.info("Execute one round monitor work, spent timemills: {}", spentTimeMills);
     }
 
     private void reportUndoneMsgs(final String consumerGroup) {
diff --git a/distribution/conf/logback_tools.xml b/tools/src/main/resources/rmq.tools.logback.xml
similarity index 78%
rename from distribution/conf/logback_tools.xml
rename to tools/src/main/resources/rmq.tools.logback.xml
index 4a93136..babd1c6 100644
--- a/distribution/conf/logback_tools.xml
+++ b/tools/src/main/resources/rmq.tools.logback.xml
@@ -18,15 +18,15 @@
 
 <configuration scan="true" scanPeriod="30 seconds">
     <appender name="DefaultAppender"
-              class="ch.qos.logback.core.rolling.RollingFileAppender">
+              class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.RollingFileAppender">
         <file>${user.home}/logs/rocketmqlogs/tools_default.log</file>
         <append>true</append>
-        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+        <rollingPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
             <fileNamePattern>${user.home}/logs/rocketmqlogs/otherdays/tools_default.%i.log.gz</fileNamePattern>
             <minIndex>1</minIndex>
             <maxIndex>5</maxIndex>
         </rollingPolicy>
-        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+        <triggeringPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
             <maxFileSize>100MB</maxFileSize>
         </triggeringPolicy>
         <encoder>
@@ -36,16 +36,16 @@
     </appender>
 
     <appender name="RocketmqToolsAppender_inner"
-              class="ch.qos.logback.core.rolling.RollingFileAppender">
+              class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.RollingFileAppender">
         <file>${user.home}/logs/rocketmqlogs/tools.log</file>
         <append>true</append>
-        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+        <rollingPolicy class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
             <fileNamePattern>${user.home}/logs/rocketmqlogs/otherdays/tools.%i.log.gz</fileNamePattern>
             <minIndex>1</minIndex>
             <maxIndex>5</maxIndex>
         </rollingPolicy>
         <triggeringPolicy
-            class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+            class="org.apache.rocketmq.shade.ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
             <maxFileSize>100MB</maxFileSize>
         </triggeringPolicy>
         <encoder>
@@ -53,12 +53,12 @@
             <charset class="java.nio.charset.Charset">UTF-8</charset>
         </encoder>
     </appender>
-    <appender name="RocketmqToolsAppender" class="ch.qos.logback.classic.AsyncAppender">
+    <appender name="RocketmqToolsAppender" class="org.apache.rocketmq.shade.ch.qos.logback.classic.AsyncAppender">
         <appender-ref ref="RocketmqToolsAppender_inner"/>
     </appender>
 
 
-    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+    <appender name="STDOUT" class="org.apache.rocketmq.shade.ch.qos.logback.core.ConsoleAppender">
         <append>true</append>
         <encoder>
             <pattern>%d{yyy-MM-dd HH:mm:ss,GMT+8} %p %t - %m%n</pattern>
diff --git a/tools/src/test/java/org/apache/rocketmq/tools/command/broker/DeleteExpiredCommitLogSubCommandTest.java b/tools/src/test/java/org/apache/rocketmq/tools/command/broker/DeleteExpiredCommitLogSubCommandTest.java
index 38f7250..931d2b2 100644
--- a/tools/src/test/java/org/apache/rocketmq/tools/command/broker/DeleteExpiredCommitLogSubCommandTest.java
+++ b/tools/src/test/java/org/apache/rocketmq/tools/command/broker/DeleteExpiredCommitLogSubCommandTest.java
@@ -61,7 +61,7 @@
         final CommandLine commandLine = ServerUtil.parseCmdLine("mqadmin " + cmd.commandName(), subargs,
             cmd.buildCommandlineOptions(options), new DefaultParser());
         cmd.execute(commandLine, options, null);
-        Assert.assertTrue(outContent.toString().startsWith("success"));
+        Assert.assertTrue(outContent.toString().contains("success"));
         Assert.assertEquals("", errContent.toString());
     }
 }
diff --git a/tools/src/test/java/org/apache/rocketmq/tools/command/server/ServerResponseMocker.java b/tools/src/test/java/org/apache/rocketmq/tools/command/server/ServerResponseMocker.java
index 8e043ce..94dca48 100644
--- a/tools/src/test/java/org/apache/rocketmq/tools/command/server/ServerResponseMocker.java
+++ b/tools/src/test/java/org/apache/rocketmq/tools/command/server/ServerResponseMocker.java
@@ -32,14 +32,12 @@
 import java.net.InetSocketAddress;
 import java.util.HashMap;
 import java.util.concurrent.ExecutionException;
-import org.apache.rocketmq.client.log.ClientLogger;
 import org.apache.rocketmq.remoting.netty.NettyDecoder;
 import org.apache.rocketmq.remoting.netty.NettyEncoder;
 import org.apache.rocketmq.remoting.protocol.RemotingCommand;
 import org.apache.rocketmq.remoting.protocol.RemotingSysResponseCode;
 import org.junit.After;
 import org.junit.Before;
-import org.junit.BeforeClass;
 
 /**
  * mock server response for command
@@ -50,11 +48,6 @@
 
     private final NioEventLoopGroup eventLoopGroup = new NioEventLoopGroup();
 
-    @BeforeClass
-    public static void setLogHome() {
-        System.setProperty(ClientLogger.CLIENT_LOG_ROOT, System.getProperty("java.io.tmpdir"));
-    }
-
     @Before
     public void before() {
         start();
@@ -89,7 +82,7 @@
                 .channel(NioServerSocketChannel.class)
                 .option(ChannelOption.SO_BACKLOG, 1024)
                 .option(ChannelOption.SO_REUSEADDR, true)
-                .option(ChannelOption.SO_KEEPALIVE, false)
+                .childOption(ChannelOption.SO_KEEPALIVE, false)
                 .childOption(ChannelOption.TCP_NODELAY, true)
                 .childOption(ChannelOption.SO_SNDBUF, 65535)
                 .childOption(ChannelOption.SO_RCVBUF, 65535)
diff --git a/store/src/test/resources/logback-test.xml b/tools/src/test/resources/rmq.logback-test.xml
similarity index 64%
copy from store/src/test/resources/logback-test.xml
copy to tools/src/test/resources/rmq.logback-test.xml
index a033816..c3ec0d1 100644
--- a/store/src/test/resources/logback-test.xml
+++ b/tools/src/test/resources/rmq.logback-test.xml
@@ -17,19 +17,20 @@
   -->
 <configuration>
 
-    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
-        <encoder>
-            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n</pattern>
-            <charset class="java.nio.charset.Charset">UTF-8</charset>
-        </encoder>
+    <appender name="CONSOLE" class="org.apache.rocketmq.shade.ch.qos.logback.core.ConsoleAppender">
+        <layout class="org.apache.rocketmq.shade.ch.qos.logback.classic.PatternLayout">
+            <Pattern>
+                %d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n
+            </Pattern>
+        </layout>
     </appender>
 
-    <logger name="org.apache.rocketmq.store" level="WARN" additivity="false">
-        <appender-ref ref="STDOUT"/>
+    <logger name="org.apache.rocketmq" level="error" additivity="false">
+        <appender-ref ref="CONSOLE"/>
     </logger>
 
-    <root level="OFF">
-        <appender-ref ref="STDOUT"/>
+    <root level="error">
+        <appender-ref ref="CONSOLE"/>
     </root>
 
-</configuration>
+</configuration>
\ No newline at end of file