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

jinrongtong pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/rocketmq.git


The following commit(s) were added to refs/heads/develop by this push:
     new a45c7bc  [ISSUE #3852]Move the Logappender module to external (#3851)
a45c7bc is described below

commit a45c7bc60eee5885841d3eb0cb93d16c88f32506
Author: Heng Du <[email protected]>
AuthorDate: Wed Feb 16 10:45:38 2022 +0800

    [ISSUE #3852]Move the Logappender module to external (#3851)
    
    * feat(logappender) move logappender to 
external(https://lists.apache.org/thread/938sjby3hnnzcttpp20p17ywhc0rgr8s)
    
    * remove logappender module
---
 logappender/pom.xml                                |  80 --------
 .../logappender/common/ProducerInstance.java       |  97 ---------
 .../logappender/log4j/RocketmqLog4jAppender.java   | 189 -----------------
 .../logappender/log4j2/RocketmqLog4j2Appender.java | 226 ---------------------
 .../logback/RocketmqLogbackAppender.java           | 179 ----------------
 .../rocketmq/logappender/AbstractTestCase.java     |  72 -------
 .../rocketmq/logappender/Log4jPropertiesTest.java  |  32 ---
 .../org/apache/rocketmq/logappender/Log4jTest.java |  42 ----
 .../apache/rocketmq/logappender/Log4jXmlTest.java  |  32 ---
 .../apache/rocketmq/logappender/LogbackTest.java   |  52 -----
 .../apache/rocketmq/logappender/log4j2Test.java    |  44 ----
 .../src/test/resources/log4j-example.properties    |  33 ---
 logappender/src/test/resources/log4j-example.xml   |  56 -----
 logappender/src/test/resources/log4j2-example.xml  |  41 ----
 logappender/src/test/resources/logback-example.xml |  81 --------
 pom.xml                                            |   1 -
 16 files changed, 1257 deletions(-)

diff --git a/logappender/pom.xml b/logappender/pom.xml
deleted file mode 100644
index 306edc7..0000000
--- a/logappender/pom.xml
+++ /dev/null
@@ -1,80 +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.
-  -->
-<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>4.9.3-SNAPSHOT</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-    <artifactId>rocketmq-logappender</artifactId>
-       <packaging>jar</packaging>
-    <name>rocketmq-logappender ${project.version}</name>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-api</artifactId>
-            <optional>true</optional>
-        </dependency>
-        <dependency>
-            <groupId>log4j</groupId>
-            <artifactId>log4j</artifactId>
-            <optional>true</optional>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-core</artifactId>
-            <optional>true</optional>
-        </dependency>
-        <dependency>
-            <groupId>ch.qos.logback</groupId>
-            <artifactId>logback-classic</artifactId>
-            <optional>true</optional>
-        </dependency>
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>rocketmq-client</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>rocketmq-namesrv</artifactId>
-            <scope>test</scope>
-            <exclusions>
-                <exclusion>
-                    <groupId>ch.qos.logback</groupId>
-                    <artifactId>logback-classic</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>rocketmq-broker</artifactId>
-            <scope>test</scope>
-            <exclusions>
-                <exclusion>
-                    <groupId>ch.qos.logback</groupId>
-                    <artifactId>logback-classic</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-
-    </dependencies>
-
-
-</project>
diff --git 
a/logappender/src/main/java/org/apache/rocketmq/logappender/common/ProducerInstance.java
 
b/logappender/src/main/java/org/apache/rocketmq/logappender/common/ProducerInstance.java
deleted file mode 100644
index d2adac5..0000000
--- 
a/logappender/src/main/java/org/apache/rocketmq/logappender/common/ProducerInstance.java
+++ /dev/null
@@ -1,97 +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.logappender.common;
-
-import org.apache.commons.lang3.StringUtils;
-import org.apache.rocketmq.client.exception.MQClientException;
-import org.apache.rocketmq.client.producer.DefaultMQProducer;
-import org.apache.rocketmq.client.producer.MQProducer;
-
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-
-/**
- * Common Producer component
- */
-public class ProducerInstance {
-
-    public static final String APPENDER_TYPE = "APPENDER_TYPE";
-
-    public static final String LOG4J_APPENDER = "LOG4J_APPENDER";
-
-    public static final String LOG4J2_APPENDER = "LOG4J2_APPENDER";
-
-    public static final String LOGBACK_APPENDER = "LOGBACK_APPENDER";
-
-    public static final String DEFAULT_GROUP = "rocketmq_appender";
-
-    private ConcurrentHashMap<String, MQProducer> producerMap = new 
ConcurrentHashMap<String, MQProducer>();
-
-    private static ProducerInstance instance = new ProducerInstance();
-
-    public static ProducerInstance getProducerInstance() {
-        return instance;
-    }
-
-    private String genKey(String nameServerAddress, String group) {
-        return nameServerAddress + "_" + group;
-    }
-
-    public MQProducer getInstance(String nameServerAddress, String group) 
throws MQClientException {
-        if (StringUtils.isBlank(group)) {
-            group = DEFAULT_GROUP;
-        }
-
-        String genKey = genKey(nameServerAddress, group);
-        MQProducer p = getProducerInstance().producerMap.get(genKey);
-        if (p != null) {
-            return p;
-        }
-
-        DefaultMQProducer defaultMQProducer = new DefaultMQProducer(group);
-        defaultMQProducer.setNamesrvAddr(nameServerAddress);
-        MQProducer beforeProducer = null;
-        beforeProducer = getProducerInstance().producerMap.putIfAbsent(genKey, 
defaultMQProducer);
-        if (beforeProducer != null) {
-            return beforeProducer;
-        }
-        defaultMQProducer.start();
-        return defaultMQProducer;
-    }
-
-    public void removeAndClose(String nameServerAddress, String group) {
-        if (group == null) {
-            group = DEFAULT_GROUP;
-        }
-        String genKey = genKey(nameServerAddress, group);
-        MQProducer producer = getProducerInstance().producerMap.remove(genKey);
-
-        if (producer != null) {
-            producer.shutdown();
-        }
-    }
-
-    public void closeAll() {
-        Set<Map.Entry<String, MQProducer>> entries = 
getProducerInstance().producerMap.entrySet();
-        for (Map.Entry<String, MQProducer> entry : entries) {
-            getProducerInstance().producerMap.remove(entry.getKey());
-            entry.getValue().shutdown();
-        }
-    }
-
-}
diff --git 
a/logappender/src/main/java/org/apache/rocketmq/logappender/log4j/RocketmqLog4jAppender.java
 
b/logappender/src/main/java/org/apache/rocketmq/logappender/log4j/RocketmqLog4jAppender.java
deleted file mode 100644
index 646e924..0000000
--- 
a/logappender/src/main/java/org/apache/rocketmq/logappender/log4j/RocketmqLog4jAppender.java
+++ /dev/null
@@ -1,189 +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.logappender.log4j;
-
-import org.apache.rocketmq.common.message.Message;
-import org.apache.rocketmq.logappender.common.ProducerInstance;
-import org.apache.log4j.AppenderSkeleton;
-import org.apache.log4j.helpers.LogLog;
-import org.apache.log4j.spi.ErrorCode;
-import org.apache.log4j.spi.LoggingEvent;
-import org.apache.rocketmq.client.producer.MQProducer;
-
-/**
- * Log4j Appender Component
- */
-public class RocketmqLog4jAppender extends AppenderSkeleton {
-
-    /**
-     * Appended message tag define
-     */
-    private String tag;
-
-    /**
-     * Whitch topic to send log messages
-     */
-    private String topic;
-
-    private boolean locationInfo;
-
-    /**
-     * Log producer send instance
-     */
-    private MQProducer producer;
-
-    /**
-     * RocketMQ nameserver address
-     */
-    private String nameServerAddress;
-
-    /**
-     * Log producer group
-     */
-    private String producerGroup;
-
-    public RocketmqLog4jAppender() {
-    }
-
-    public void activateOptions() {
-        LogLog.debug("Getting initial context.");
-        if (!checkEntryConditions()) {
-            return;
-        }
-        try {
-            producer = 
ProducerInstance.getProducerInstance().getInstance(nameServerAddress, 
producerGroup);
-        } catch (Exception e) {
-            LogLog.error("activateOptions nameserver:" + nameServerAddress + " 
group:" + producerGroup + " " + e.getMessage());
-        }
-    }
-
-    /**
-     * Info,error,warn,callback method implementation
-     */
-    public void append(LoggingEvent event) {
-        if (null == producer) {
-            return;
-        }
-        if (locationInfo) {
-            event.getLocationInformation();
-        }
-        byte[] data = this.layout.format(event).getBytes();
-        try {
-            Message msg = new Message(topic, tag, data);
-            msg.getProperties().put(ProducerInstance.APPENDER_TYPE, 
ProducerInstance.LOG4J_APPENDER);
-
-            //Send message and do not wait for the ack from the message broker.
-            producer.sendOneway(msg);
-        } catch (Exception e) {
-            String msg = new String(data);
-            errorHandler.error("Could not send message in 
RocketmqLog4jAppender [" + name + "].Message is :" + msg, e,
-                ErrorCode.GENERIC_FAILURE);
-        }
-    }
-
-    protected boolean checkEntryConditions() {
-        String fail = null;
-
-        if (this.topic == null) {
-            fail = "No topic";
-        } else if (this.tag == null) {
-            fail = "No tag";
-        }
-
-        if (fail != null) {
-            errorHandler.error(fail + " for RocketmqLog4jAppender named [" + 
name + "].");
-            return false;
-        } else {
-            return true;
-        }
-    }
-
-    /**
-     * When system exit,this method will be called to close resources
-     */
-    public synchronized void close() {
-        // The synchronized modifier avoids concurrent append and close 
operations
-
-        if (this.closed)
-            return;
-
-        LogLog.debug("Closing RocketmqLog4jAppender [" + name + "].");
-        this.closed = true;
-
-        try {
-            
ProducerInstance.getProducerInstance().removeAndClose(this.nameServerAddress, 
this.producerGroup);
-        } catch (Exception e) {
-            LogLog.error("Closing RocketmqLog4jAppender [" + name + "] 
nameServerAddress:" + nameServerAddress + " group:" + producerGroup + " " + 
e.getMessage());
-        }
-        // Help garbage collection
-        producer = null;
-    }
-
-    public boolean requiresLayout() {
-        return true;
-    }
-
-    public String getTopic() {
-        return topic;
-    }
-
-    public void setTopic(String topic) {
-        this.topic = topic;
-    }
-
-    public String getTag() {
-        return tag;
-    }
-
-    public void setTag(String tag) {
-        this.tag = tag;
-    }
-
-    /**
-     * Returns value of the <b>LocationInfo</b> property which
-     * determines whether location (stack) info is sent to the remote
-     * subscriber.
-     */
-    public boolean isLocationInfo() {
-        return locationInfo;
-    }
-
-    /**
-     * If true, the information sent to the remote subscriber will
-     * include caller's location information. By default no location
-     * information is sent to the subscriber.
-     */
-    public void setLocationInfo(boolean locationInfo) {
-        this.locationInfo = locationInfo;
-    }
-
-    /**
-     * Returns the message producer,Only valid after
-     * activateOptions() method has been invoked.
-     */
-    protected MQProducer getProducer() {
-        return producer;
-    }
-
-    public void setNameServerAddress(String nameServerAddress) {
-        this.nameServerAddress = nameServerAddress;
-    }
-
-    public void setProducerGroup(String producerGroup) {
-        this.producerGroup = producerGroup;
-    }
-}
diff --git 
a/logappender/src/main/java/org/apache/rocketmq/logappender/log4j2/RocketmqLog4j2Appender.java
 
b/logappender/src/main/java/org/apache/rocketmq/logappender/log4j2/RocketmqLog4j2Appender.java
deleted file mode 100644
index 9543f1c..0000000
--- 
a/logappender/src/main/java/org/apache/rocketmq/logappender/log4j2/RocketmqLog4j2Appender.java
+++ /dev/null
@@ -1,226 +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.logappender.log4j2;
-
-import org.apache.logging.log4j.core.Appender;
-import org.apache.logging.log4j.core.Filter;
-import org.apache.logging.log4j.core.ErrorHandler;
-import org.apache.logging.log4j.core.Layout;
-import org.apache.logging.log4j.core.LogEvent;
-import org.apache.logging.log4j.core.config.Node;
-import org.apache.logging.log4j.core.config.plugins.Plugin;
-import org.apache.logging.log4j.core.config.plugins.PluginBuilderAttribute;
-import org.apache.logging.log4j.core.config.plugins.PluginBuilderFactory;
-import org.apache.logging.log4j.core.config.plugins.PluginElement;
-import org.apache.rocketmq.common.message.Message;
-import org.apache.rocketmq.logappender.common.ProducerInstance;
-import org.apache.logging.log4j.core.appender.AbstractAppender;
-import 
org.apache.logging.log4j.core.config.plugins.validation.constraints.Required;
-import org.apache.logging.log4j.core.layout.SerializedLayout;
-import org.apache.rocketmq.client.producer.MQProducer;
-
-import java.io.Serializable;
-import java.util.concurrent.TimeUnit;
-
-/**
- * Log4j2 Appender Component
- */
-@Plugin(name = "RocketMQ",
-    category = Node.CATEGORY,
-    elementType = Appender.ELEMENT_TYPE,
-    printObject = true)
-public class RocketmqLog4j2Appender extends AbstractAppender {
-
-    /**
-     * RocketMQ nameserver address
-     */
-    private String nameServerAddress;
-
-    /**
-     * Log producer group
-     */
-    private String producerGroup;
-
-    /**
-     * Log producer send instance
-     */
-    private MQProducer producer;
-
-    /**
-     * Appended message tag define
-     */
-    private String tag;
-
-    /**
-     * Whitch topic to send log messages
-     */
-    private String topic;
-
-    protected RocketmqLog4j2Appender(String name, Filter filter, Layout<? 
extends Serializable> layout,
-        boolean ignoreExceptions, String nameServerAddress, String 
producerGroup,
-        String topic, String tag) {
-        super(name, filter, layout, ignoreExceptions);
-        this.producer = producer;
-        this.topic = topic;
-        this.tag = tag;
-        this.nameServerAddress = nameServerAddress;
-        this.producerGroup = producerGroup;
-        try {
-            this.producer = 
ProducerInstance.getProducerInstance().getInstance(this.nameServerAddress, 
this.producerGroup);
-        } catch (Exception e) {
-            ErrorHandler handler = this.getHandler();
-            if (handler != null) {
-                handler.error("Starting RocketmqLog4j2Appender [" + 
this.getName()
-                    + "] nameServerAddress:" + nameServerAddress + " group:" + 
producerGroup + " " + e.getMessage());
-            }
-        }
-    }
-
-    /**
-     * Info,error,warn,callback method implementation
-     */
-    public void append(LogEvent event) {
-        if (null == producer) {
-            return;
-        }
-        byte[] data = this.getLayout().toByteArray(event);
-        try {
-            Message msg = new Message(topic, tag, data);
-            msg.getProperties().put(ProducerInstance.APPENDER_TYPE, 
ProducerInstance.LOG4J2_APPENDER);
-
-            //Send message and do not wait for the ack from the message broker.
-            producer.sendOneway(msg);
-        } catch (Exception e) {
-            ErrorHandler handler = this.getHandler();
-            if (handler != null) {
-                String msg = new String(data);
-                handler.error("Could not send message in 
RocketmqLog4j2Appender [" + this.getName() + "].Message is : " + msg, e);
-            }
-
-        }
-    }
-
-    /**
-     * When system exit,this method will be called to close resources
-     */
-    public boolean stop(long timeout, TimeUnit timeUnit) {
-        this.setStopping();
-        try {
-            
ProducerInstance.getProducerInstance().removeAndClose(this.nameServerAddress, 
this.producerGroup);
-        } catch (Exception e) {
-            ErrorHandler handler = this.getHandler();
-            if (handler != null) {
-                handler.error("Closeing RocketmqLog4j2Appender [" + 
this.getName()
-                    + "] nameServerAddress:" + nameServerAddress + " group:" + 
producerGroup + " " + e.getMessage());
-            }
-        }
-
-        boolean stopped = super.stop(timeout, timeUnit, false);
-        this.setStopped();
-        return stopped;
-    }
-
-    /**
-     * Log4j2 builder creator
-     */
-    @PluginBuilderFactory
-    public static RocketmqLog4j2Appender.Builder newBuilder() {
-        return new RocketmqLog4j2Appender.Builder();
-    }
-
-    /**
-     * Log4j2 xml builder define
-     */
-    public static class Builder implements 
org.apache.logging.log4j.core.util.Builder<RocketmqLog4j2Appender> {
-
-        @PluginBuilderAttribute
-        @Required(message = "A name for the RocketmqLog4j2Appender must be 
specified")
-        private String name;
-
-        @PluginElement("Layout")
-        private Layout<? extends Serializable> layout;
-
-        @PluginElement("Filter")
-        private Filter filter;
-
-        @PluginBuilderAttribute
-        private boolean ignoreExceptions;
-
-        @PluginBuilderAttribute
-        private String tag;
-
-        @PluginBuilderAttribute
-        private String nameServerAddress;
-
-        @PluginBuilderAttribute
-        private String producerGroup;
-
-        @PluginBuilderAttribute
-        @Required(message = "A topic name must be specified")
-        private String topic;
-
-        private Builder() {
-            this.layout = SerializedLayout.createLayout();
-            this.ignoreExceptions = true;
-        }
-
-        public RocketmqLog4j2Appender.Builder setName(String name) {
-            this.name = name;
-            return this;
-        }
-
-        public RocketmqLog4j2Appender.Builder setLayout(Layout<? extends 
Serializable> layout) {
-            this.layout = layout;
-            return this;
-        }
-
-        public RocketmqLog4j2Appender.Builder setFilter(Filter filter) {
-            this.filter = filter;
-            return this;
-        }
-
-        public RocketmqLog4j2Appender.Builder setIgnoreExceptions(boolean 
ignoreExceptions) {
-            this.ignoreExceptions = ignoreExceptions;
-            return this;
-        }
-
-        public RocketmqLog4j2Appender.Builder setTag(final String tag) {
-            this.tag = tag;
-            return this;
-        }
-
-        public RocketmqLog4j2Appender.Builder setTopic(final String topic) {
-            this.topic = topic;
-            return this;
-        }
-
-        public RocketmqLog4j2Appender.Builder setNameServerAddress(String 
nameServerAddress) {
-            this.nameServerAddress = nameServerAddress;
-            return this;
-        }
-
-        public RocketmqLog4j2Appender.Builder setProducerGroup(String 
producerGroup) {
-            this.producerGroup = producerGroup;
-            return this;
-        }
-
-        public RocketmqLog4j2Appender build() {
-            return new RocketmqLog4j2Appender(name, filter, layout, 
ignoreExceptions,
-                nameServerAddress, producerGroup, topic, tag);
-        }
-    }
-}
diff --git 
a/logappender/src/main/java/org/apache/rocketmq/logappender/logback/RocketmqLogbackAppender.java
 
b/logappender/src/main/java/org/apache/rocketmq/logappender/logback/RocketmqLogbackAppender.java
deleted file mode 100644
index 4018cd4..0000000
--- 
a/logappender/src/main/java/org/apache/rocketmq/logappender/logback/RocketmqLogbackAppender.java
+++ /dev/null
@@ -1,179 +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.logappender.logback;
-
-import ch.qos.logback.classic.net.LoggingEventPreSerializationTransformer;
-import ch.qos.logback.classic.spi.ILoggingEvent;
-import ch.qos.logback.core.AppenderBase;
-import ch.qos.logback.core.Layout;
-import ch.qos.logback.core.spi.PreSerializationTransformer;
-import ch.qos.logback.core.status.ErrorStatus;
-import org.apache.rocketmq.common.message.Message;
-import org.apache.rocketmq.logappender.common.ProducerInstance;
-import org.apache.rocketmq.client.producer.MQProducer;
-
-/**
- * Logback Appender Component
- */
-public class RocketmqLogbackAppender extends AppenderBase<ILoggingEvent> {
-
-    /**
-     * Message tag define
-     */
-    private String tag;
-
-    /**
-     * Whitch topic to send log messages
-     */
-    private String topic;
-
-    /**
-     * RocketMQ nameserver address
-     */
-    private String nameServerAddress;
-
-    /**
-     * Log producer group
-     */
-    private String producerGroup;
-
-    /**
-     * Log producer send instance
-     */
-    private MQProducer producer;
-
-    private Layout layout;
-
-    private PreSerializationTransformer<ILoggingEvent> pst = new 
LoggingEventPreSerializationTransformer();
-
-    /**
-     * Info,error,warn,callback method implementation
-     */
-    @Override
-    protected void append(ILoggingEvent event) {
-        if (!isStarted()) {
-            return;
-        }
-        String logStr = this.layout.doLayout(event);
-        try {
-            Message msg = new Message(topic, tag, logStr.getBytes());
-            msg.getProperties().put(ProducerInstance.APPENDER_TYPE, 
ProducerInstance.LOGBACK_APPENDER);
-
-            //Send message and do not wait for the ack from the message broker.
-            producer.sendOneway(msg);
-        } catch (Exception e) {
-            addError("Could not send message in RocketmqLogbackAppender [" + 
name + "]. Message is : " + logStr, e);
-        }
-    }
-
-    /**
-     * Options are activated and become effective only after calling this 
method.
-     */
-    public void start() {
-        int errors = 0;
-
-        if (this.layout == null) {
-            addStatus(new ErrorStatus("No layout set for the 
RocketmqLogbackAppender named \"" + name + "\".", this));
-            errors++;
-        }
-
-        if (errors > 0 || !checkEntryConditions()) {
-            return;
-        }
-        try {
-            producer = 
ProducerInstance.getProducerInstance().getInstance(nameServerAddress, 
producerGroup);
-        } catch (Exception e) {
-            addError("Starting RocketmqLogbackAppender [" + this.getName()
-                + "] nameServerAddress:" + nameServerAddress + " group:" + 
producerGroup + " " + e.getMessage());
-        }
-        if (producer != null) {
-            super.start();
-        }
-    }
-
-    /**
-     * When system exit,this method will be called to close resources
-     */
-    public synchronized void stop() {
-        // The synchronized modifier avoids concurrent append and close 
operations
-        if (!this.started) {
-            return;
-        }
-
-        this.started = false;
-
-        try {
-            
ProducerInstance.getProducerInstance().removeAndClose(this.nameServerAddress, 
this.producerGroup);
-        } catch (Exception e) {
-            addError("Closeing RocketmqLogbackAppender [" + this.getName()
-                + "] nameServerAddress:" + nameServerAddress + " group:" + 
producerGroup + " " + e.getMessage());
-        }
-
-        // Help garbage collection
-        producer = null;
-    }
-
-    protected boolean checkEntryConditions() {
-        String fail = null;
-
-        if (this.topic == null) {
-            fail = "No topic";
-        }
-
-        if (fail != null) {
-            addError(fail + " for RocketmqLogbackAppender named [" + name + 
"].");
-            return false;
-        } else {
-            return true;
-        }
-    }
-
-    public Layout getLayout() {
-        return this.layout;
-    }
-
-    /**
-     * Set the pattern layout to format the log.
-     */
-    public void setLayout(Layout layout) {
-        this.layout = layout;
-    }
-
-    public String getTag() {
-        return tag;
-    }
-
-    public void setTag(String tag) {
-        this.tag = tag;
-    }
-
-    public String getTopic() {
-        return topic;
-    }
-
-    public void setTopic(String topic) {
-        this.topic = topic;
-    }
-
-    public void setNameServerAddress(String nameServerAddress) {
-        this.nameServerAddress = nameServerAddress;
-    }
-
-    public void setProducerGroup(String producerGroup) {
-        this.producerGroup = producerGroup;
-    }
-}
diff --git 
a/logappender/src/test/java/org/apache/rocketmq/logappender/AbstractTestCase.java
 
b/logappender/src/test/java/org/apache/rocketmq/logappender/AbstractTestCase.java
deleted file mode 100644
index 38904c0..0000000
--- 
a/logappender/src/test/java/org/apache/rocketmq/logappender/AbstractTestCase.java
+++ /dev/null
@@ -1,72 +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.logappender;
-
-import org.apache.rocketmq.client.producer.DefaultMQProducer;
-
-import org.apache.rocketmq.common.message.*;
-import org.apache.rocketmq.logappender.common.ProducerInstance;
-import org.junit.Before;
-import org.mockito.invocation.InvocationOnMock;
-import org.mockito.stubbing.Answer;
-
-import static org.mockito.Mockito.*;
-
-import java.lang.reflect.Field;
-import java.util.concurrent.CopyOnWriteArrayList;
-import java.util.concurrent.atomic.AtomicInteger;
-
-/**
- * Basic test rocketmq broker and name server init
- */
-public class AbstractTestCase {
-
-    private static CopyOnWriteArrayList<Message> messages = new 
CopyOnWriteArrayList<>();
-
-    @Before
-    public void mockLoggerAppender() throws Exception {
-        DefaultMQProducer defaultMQProducer = spy(new 
DefaultMQProducer("loggerAppender"));
-        doAnswer(new Answer<Void>() {
-            @Override
-            public Void answer(InvocationOnMock invocationOnMock) throws 
Throwable {
-                Message message = (Message) invocationOnMock.getArgument(0);
-                messages.add(message);
-                return null;
-            }
-        }).when(defaultMQProducer).sendOneway(any(Message.class));
-        ProducerInstance spy = mock(ProducerInstance.class);
-        Field instance = ProducerInstance.class.getDeclaredField("instance");
-        instance.setAccessible(true);
-        instance.set(ProducerInstance.class, spy);
-        doReturn(defaultMQProducer).when(spy).getInstance(anyString(), 
anyString());
-    }
-
-    public void clear() {
-
-    }
-
-    protected int consumeMessages(int count, final String key, int timeout) {
-        final AtomicInteger cc = new AtomicInteger(0);
-        for (Message message : messages) {
-            String body = new String(message.getBody());
-            if (body.contains(key)) {
-                cc.incrementAndGet();
-            }
-        }
-        return cc.get();
-    }
-}
diff --git 
a/logappender/src/test/java/org/apache/rocketmq/logappender/Log4jPropertiesTest.java
 
b/logappender/src/test/java/org/apache/rocketmq/logappender/Log4jPropertiesTest.java
deleted file mode 100644
index 8675230..0000000
--- 
a/logappender/src/test/java/org/apache/rocketmq/logappender/Log4jPropertiesTest.java
+++ /dev/null
@@ -1,32 +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.logappender;
-
-import org.apache.log4j.PropertyConfigurator;
-
-public class Log4jPropertiesTest extends Log4jTest {
-
-    @Override
-    public void init() {
-        
PropertyConfigurator.configure("src/test/resources/log4j-example.properties");
-    }
-
-    @Override
-    public String getType() {
-        return "properties";
-    }
-}
diff --git 
a/logappender/src/test/java/org/apache/rocketmq/logappender/Log4jTest.java 
b/logappender/src/test/java/org/apache/rocketmq/logappender/Log4jTest.java
deleted file mode 100644
index cf99c69..0000000
--- a/logappender/src/test/java/org/apache/rocketmq/logappender/Log4jTest.java
+++ /dev/null
@@ -1,42 +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.logappender;
-
-import org.apache.log4j.Logger;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-public abstract class Log4jTest extends AbstractTestCase {
-
-    @Before
-    public abstract void init();
-
-    public abstract String getType();
-
-    @Test
-    public void testLog4j() {
-        clear();
-        Logger logger = Logger.getLogger("testLogger");
-        for (int i = 0; i < 10; i++) {
-            logger.info("log4j " + this.getType() + " simple test message " + 
i);
-        }
-        int received = consumeMessages(10, "log4j", 10);
-        Assert.assertTrue(received > 5);
-    }
-
-}
diff --git 
a/logappender/src/test/java/org/apache/rocketmq/logappender/Log4jXmlTest.java 
b/logappender/src/test/java/org/apache/rocketmq/logappender/Log4jXmlTest.java
deleted file mode 100644
index 6743f7c..0000000
--- 
a/logappender/src/test/java/org/apache/rocketmq/logappender/Log4jXmlTest.java
+++ /dev/null
@@ -1,32 +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.logappender;
-
-import org.apache.log4j.xml.DOMConfigurator;
-
-public class Log4jXmlTest extends Log4jTest {
-
-    @Override
-    public void init() {
-        DOMConfigurator.configure("src/test/resources/log4j-example.xml");
-    }
-
-    @Override
-    public String getType() {
-        return "xml";
-    }
-}
diff --git 
a/logappender/src/test/java/org/apache/rocketmq/logappender/LogbackTest.java 
b/logappender/src/test/java/org/apache/rocketmq/logappender/LogbackTest.java
deleted file mode 100644
index 3dc18f0..0000000
--- a/logappender/src/test/java/org/apache/rocketmq/logappender/LogbackTest.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.logappender;
-
-import ch.qos.logback.classic.LoggerContext;
-import ch.qos.logback.classic.joran.JoranConfigurator;
-import ch.qos.logback.core.joran.spi.JoranException;
-import ch.qos.logback.core.util.StatusPrinter;
-import java.io.File;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class LogbackTest extends AbstractTestCase {
-
-    @Before
-    public void init() throws JoranException {
-        LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
-        JoranConfigurator configurator = new JoranConfigurator();
-        configurator.setContext(lc);
-        lc.reset();
-        configurator.doConfigure(new 
File("src/test/resources/logback-example.xml"));
-        StatusPrinter.printInCaseOfErrorsOrWarnings(lc);
-    }
-
-    @Test
-    public void testLogback() {
-        clear();
-        Logger logger = LoggerFactory.getLogger("testLogger");
-        for (int i = 0; i < 10; i++) {
-            logger.info("logback test message " + i);
-        }
-        int received = consumeMessages(10, "logback", 10);
-        Assert.assertTrue(received >= 5);
-    }
-}
diff --git 
a/logappender/src/test/java/org/apache/rocketmq/logappender/log4j2Test.java 
b/logappender/src/test/java/org/apache/rocketmq/logappender/log4j2Test.java
deleted file mode 100644
index 6f6af60..0000000
--- a/logappender/src/test/java/org/apache/rocketmq/logappender/log4j2Test.java
+++ /dev/null
@@ -1,44 +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.logappender;
-
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.core.config.Configurator;
-import org.apache.rocketmq.client.exception.MQClientException;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-public class log4j2Test extends AbstractTestCase {
-
-    @Before
-    public void init() {
-        Configurator.initialize("log4j2", 
"src/test/resources/log4j2-example.xml");
-    }
-
-    @Test
-    public void testLog4j2() throws InterruptedException, MQClientException {
-        clear();
-        Logger logger = LogManager.getLogger("test");
-        for (int i = 0; i < 10; i++) {
-            logger.info("log4j2 log message " + i);
-        }
-        int received = consumeMessages(10, "log4j2", 10);
-        Assert.assertTrue(received > 5);
-    }
-}
diff --git a/logappender/src/test/resources/log4j-example.properties 
b/logappender/src/test/resources/log4j-example.properties
deleted file mode 100644
index 63b2a98..0000000
--- a/logappender/src/test/resources/log4j-example.properties
+++ /dev/null
@@ -1,33 +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.
-log4j.rootLogger=INFO,stdout
-log4j.logger.testLogger=INFO,mq
-log4j.appender.stdout=org.apache.log4j.ConsoleAppender
-log4j.appender.stdout.Target=System.out
-log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-log4j.appender.stdout.layout.ConversionPattern=%d %-4r [%t] (%F:%L) %-5p - %m%n
-log4j.appender.store=org.apache.log4j.DailyRollingFileAppender
-log4j.appender.store.File=${user.home}/logs/rocketmqlogs/appender.log
-log4j.appender.store.Append=true
-log4j.appender.store.DatePattern='_'yyyy-MM-dd'.log'
-log4j.appender.store.layout=org.apache.log4j.PatternLayout
-log4j.appender.store.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-4r 
[%t] (%F:%L) %-5p - %m%n
-log4j.appender.mq=org.apache.rocketmq.logappender.log4j.RocketmqLog4jAppender
-log4j.appender.mq.Tag=log
-log4j.appender.mq.Topic=TopicTest
-log4j.appender.mq.ProducerGroup=loggerAppender
-log4j.appender.mq.NameServerAddress=127.0.0.1:9876
-log4j.appender.mq.layout=org.apache.log4j.PatternLayout
-log4j.appender.mq.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-4r [%t] 
(%F:%L) %-5p - %m%n
\ No newline at end of file
diff --git a/logappender/src/test/resources/log4j-example.xml 
b/logappender/src/test/resources/log4j-example.xml
deleted file mode 100644
index 6bddde9..0000000
--- a/logappender/src/test/resources/log4j-example.xml
+++ /dev/null
@@ -1,56 +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="consoleAppender" class="org.apache.log4j.ConsoleAppender">
-        <param name="Encoding" value="UTF-8"/>
-        <param name="Target" value="System.out"/>
-        <layout class="org.apache.log4j.PatternLayout">
-            <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss},%d 
%-4r [%t] (%F:%L) %-5p - %m%n"/>
-        </layout>
-    </appender>
-
-    <appender name="mqAppender1" 
class="org.apache.rocketmq.logappender.log4j.RocketmqLog4jAppender">
-        <param name="Tag" value="log1"/>
-        <param name="Topic" value="TopicTest"/>
-        <param name="ProducerGroup" value="loggerAppender"/>
-        <param name="NameServerAddress" value="127.0.0.1:9876"/>
-        <layout class="org.apache.log4j.PatternLayout">
-            <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss}-%p 
%t %c - %m%n"/>
-        </layout>
-    </appender>
-
-    <logger name="testLogger" additivity="false">
-        <level value="INFO"/>
-        <appender-ref ref="mqAppender1"/>
-        <appender-ref ref="consoleAppender"/>
-    </logger>
-
-    <logger name="consoleLogger" additivity="false">
-        <level value="INFO"/>
-        <appender-ref ref="consoleAppender"/>
-    </logger>
-
-
-    <root>
-        <level value="INFO"/>
-        <appender-ref ref="consoleAppender"/>
-    </root>
-
-</log4j:configuration>
\ No newline at end of file
diff --git a/logappender/src/test/resources/log4j2-example.xml 
b/logappender/src/test/resources/log4j2-example.xml
deleted file mode 100644
index c310855..0000000
--- a/logappender/src/test/resources/log4j2-example.xml
+++ /dev/null
@@ -1,41 +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" name="Rocketmq">
-    <Appenders>
-        <RocketMQ name="rocketmqAppender" producerGroup="loggerAppender" 
nameServerAddress="127.0.0.1:9876"
-                  topic="TopicTest" tag="log">
-            <PatternLayout pattern="%d [%p] hahahah %c %m%n"/>
-        </RocketMQ>
-
-        <Console name="Console" target="SYSTEM_OUT">
-            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} 
- %msg%n"/>
-        </Console>
-    </Appenders>
-    <Loggers>
-
-        <Logger name="rocketmqLogger" level="info">
-            <AppenderRef ref="rocketmqAppender"/>
-        </Logger>
-
-        <Root level="debug">
-            <AppenderRef ref="Console"/>
-            <AppenderRef ref="rocketmqAppender"/>
-        </Root>
-    </Loggers>
-</Configuration>
\ No newline at end of file
diff --git a/logappender/src/test/resources/logback-example.xml 
b/logappender/src/test/resources/logback-example.xml
deleted file mode 100644
index 3786137..0000000
--- a/logappender/src/test/resources/logback-example.xml
+++ /dev/null
@@ -1,81 +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="system" 
class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <file>${user.home}/logs/simple/system.log</file>
-        <append>true</append>
-        <rollingPolicy 
class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
-            <fileNamePattern>${user.home}/logs/simple/system.%i.log
-            </fileNamePattern>
-            <minIndex>1</minIndex>
-            <maxIndex>30</maxIndex>
-        </rollingPolicy>
-        <triggeringPolicy 
class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
-            <maxFileSize>100MB</maxFileSize>
-        </triggeringPolicy>
-        <encoder>
-            <pattern>%date %p %t - %m%n</pattern>
-            <charset class="java.nio.charset.Charset">UTF-8</charset>
-        </encoder>
-    </appender>
-
-    <appender name="consoleAppender" 
class="ch.qos.logback.core.ConsoleAppender">
-        <target>System.out</target>
-        <encoder>
-            <pattern>%date %p %t - %m%n</pattern>
-            <charset class="java.nio.charset.Charset">UTF-8</charset>
-        </encoder>
-    </appender>
-
-    <appender name="dailyAppender" 
class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <file>${user.home}/logs/simple/daily.log</file>
-        <rollingPolicy 
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            
<fileNamePattern>${user.home}/logs/simple/daily.log.%d{yyyy-MM-dd_HH}</fileNamePattern>
-            <maxHistory>30</maxHistory>
-        </rollingPolicy>
-        <encoder>
-            <pattern>%date %p %t - %m%n</pattern>
-        </encoder>
-    </appender>
-
-    <appender name="mqAppender1" 
class="org.apache.rocketmq.logappender.logback.RocketmqLogbackAppender">
-        <tag>log1</tag>
-        <topic>TopicTest</topic>
-        <producerGroup>loggerAppender</producerGroup>
-        <nameServerAddress>127.0.0.1:9876</nameServerAddress>
-        <layout>
-            <pattern>%date %p %t - %m%n</pattern>
-        </layout>
-    </appender>
-
-    <root>
-        <level value="debug"/>
-        <appender-ref ref="consoleAppender"/>
-    </root>
-
-    <logger name="systemLogger" level="debug" additivity="false">
-        <appender-ref ref="system"/>
-    </logger>
-
-    <logger name="testLogger" level="debug" additivity="false">
-        <appender-ref ref="mqAppender1"/>
-        <appender-ref ref="consoleAppender"/>
-    </logger>
-</configuration>
diff --git a/pom.xml b/pom.xml
index 1671bd1..7932472 100644
--- a/pom.xml
+++ b/pom.xml
@@ -113,7 +113,6 @@
         <module>store</module>
         <module>namesrv</module>
         <module>remoting</module>
-        <module>logappender</module>
         <module>srvutil</module>
         <module>filter</module>
         <module>test</module>

Reply via email to