rocketmq-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (ROCKETMQ-194) log appender useing rocketmq
Date Sun, 14 May 2017 13:43:04 GMT

    [ https://issues.apache.org/jira/browse/ROCKETMQ-194?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16009743#comment-16009743
] 

ASF GitHub Bot commented on ROCKETMQ-194:
-----------------------------------------

Github user zhouxinyu commented on a diff in the pull request:

    https://github.com/apache/incubator-rocketmq/pull/101#discussion_r116381299
  
    --- Diff: logappender/src/main/java/org/apache/rocketmq/logappender/log4j2/RocketmqLog4j2Appender.java
---
    @@ -0,0 +1,233 @@
    +/*
    + * 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.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
    +     *
    +     * @param event
    +     */
    +    public void append(LogEvent event) {
    +        if (null == producer) {
    +            return;
    +        }
    +
    +        try {
    +            byte[] bytes = this.getLayout().toByteArray(event);
    +            Message msg = new Message(topic, tag, bytes);
    +            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) {
    +                handler.error("Could not send message in RocketmqLog4j2Appender [" +
this.getName() + "].", e);
    --- End diff --
    
    May be we want to know which log message isn't send to server?


> log appender useing rocketmq
> ----------------------------
>
>                 Key: ROCKETMQ-194
>                 URL: https://issues.apache.org/jira/browse/ROCKETMQ-194
>             Project: Apache RocketMQ
>          Issue Type: New Feature
>    Affects Versions: 4.1.0-incubating
>         Environment: jdk7
>            Reporter: lindzh
>            Assignee: vongosling
>              Labels: features
>             Fix For: 4.1.0-incubating
>
>   Original Estimate: 72h
>  Remaining Estimate: 72h
>
> As Rocketmq is widely used,A log appender is also necessary.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Mime
View raw message