aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/org/onap/dmaap/mr/logging/MRAppender.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/onap/dmaap/mr/logging/MRAppender.java')
-rw-r--r--src/main/java/org/onap/dmaap/mr/logging/MRAppender.java165
1 files changed, 165 insertions, 0 deletions
diff --git a/src/main/java/org/onap/dmaap/mr/logging/MRAppender.java b/src/main/java/org/onap/dmaap/mr/logging/MRAppender.java
new file mode 100644
index 0000000..8842b14
--- /dev/null
+++ b/src/main/java/org/onap/dmaap/mr/logging/MRAppender.java
@@ -0,0 +1,165 @@
+/*******************************************************************************
+ * ============LICENSE_START=======================================================
+ * org.onap.dmaap
+ * ================================================================================
+ * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed 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.
+ * ============LICENSE_END=========================================================
+ *
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ *
+ *******************************************************************************/
+/**
+ *
+ */
+package org.onap.dmaap.mr.logging;
+
+import java.io.IOException;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.apache.log4j.AppenderSkeleton;
+import org.apache.log4j.spi.LoggingEvent;
+
+import org.onap.dmaap.mr.client.MRClientFactory;
+import org.onap.dmaap.mr.client.MRPublisher;
+
+/**
+ * @author author
+ *
+ */
+public class MRAppender extends AppenderSkeleton {
+
+ private Logger logger = LoggerFactory.getLogger(this.getClass().getName());
+
+ private MRPublisher fPublisher;
+
+ //Provided through log4j configuration
+ private String topic;
+ private String partition;
+ private String hosts;
+ private int maxBatchSize = 1;
+ private int maxAgeMs = 1000;
+ private boolean compress = false;
+
+ /**
+ *
+ */
+ public MRAppender() {
+ super();
+ }
+
+ /**
+ * @param isActive
+ */
+ public MRAppender(boolean isActive) {
+ super(isActive);
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.log4j.Appender#close()
+ */
+ @Override
+ public void close() {
+ if (!this.closed) {
+ this.closed = true;
+ fPublisher.close();
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.log4j.Appender#requiresLayout()
+ */
+ @Override
+ public boolean requiresLayout() {
+ return false;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.log4j.AppenderSkeleton#append(org.apache.log4j.spi.LoggingEvent)
+ */
+ @Override
+ protected void append(LoggingEvent event) {
+ final String message;
+
+ if (this.layout == null) {
+ message = event.getRenderedMessage();
+ } else {
+ message = this.layout.format(event);
+ }
+
+ try {
+ fPublisher.send(partition, message);
+ } catch (IOException e) {
+ logger.error("IOException: ", e);
+ }
+ }
+
+ @Override
+ public void activateOptions() {
+ if (hosts != null && topic != null && partition != null) {
+ fPublisher = MRClientFactory.createBatchingPublisher(hosts.split(","), topic, maxBatchSize, maxAgeMs, compress);
+ } else {
+ logger.error("The Hosts, Topic, and Partition parameter are required to create a MR Log4J Appender");
+ }
+ }
+ public String getTopic() {
+ return topic;
+ }
+
+ public void setTopic(String topic) {
+ this.topic = topic;
+ }
+
+ public String getPartition() {
+ return partition;
+ }
+
+ public void setPartition(String partition) {
+ this.partition = partition;
+ }
+
+ public String getHosts() {
+ return hosts;
+ }
+
+ public void setHosts(String hosts) {
+ this.hosts = hosts;
+ }
+
+ public int getMaxBatchSize() {
+ return maxBatchSize;
+ }
+
+ public void setMaxBatchSize(int maxBatchSize) {
+ this.maxBatchSize = maxBatchSize;
+ }
+
+ public int getMaxAgeMs() {
+ return maxAgeMs;
+ }
+
+ public void setMaxAgeMs(int maxAgeMs) {
+ this.maxAgeMs = maxAgeMs;
+ }
+
+ public boolean isCompress() {
+ return compress;
+ }
+
+ public void setCompress(boolean compress) {
+ this.compress = compress;
+ }
+
+}