From 8ff4faad57fceb3c62ad04da0cf9b6bae5f6bc4f Mon Sep 17 00:00:00 2001 From: Kai Date: Sat, 22 Feb 2020 15:54:23 +0800 Subject: fix debug log Issue-ID: DCAEGEN2-2077 Signed-off-by: Kai Lu Change-Id: Ice1b21ae478a6311f6202cac48ba10dc1b859bc3 --- dcae-analytics/dcae-analytics-web/pom.xml | 5 +++ .../dcae/analytics/web/config/DmaapMrConfig.java | 2 +- .../analytics/web/dmaap/MrMessageSplitter.java | 48 +++++++++++++--------- .../web/dmaap/MrSubscriberPollingAdvice.java | 20 +++++---- .../web/dmaap/MrTriggerMessageProvider.java | 13 +++--- .../web/exception/AnalyticsParsingException.java | 33 --------------- ...nfigBindingServiceEnvironmentPostProcessor.java | 2 +- 7 files changed, 55 insertions(+), 68 deletions(-) delete mode 100644 dcae-analytics/dcae-analytics-web/src/main/java/org/onap/dcae/analytics/web/exception/AnalyticsParsingException.java (limited to 'dcae-analytics/dcae-analytics-web') diff --git a/dcae-analytics/dcae-analytics-web/pom.xml b/dcae-analytics/dcae-analytics-web/pom.xml index d331f45..7744f3f 100644 --- a/dcae-analytics/dcae-analytics-web/pom.xml +++ b/dcae-analytics/dcae-analytics-web/pom.xml @@ -49,6 +49,11 @@ ${project.groupId} dcae-analytics-model + + + ${project.groupId} + dcae-analytics-tca-core + diff --git a/dcae-analytics/dcae-analytics-web/src/main/java/org/onap/dcae/analytics/web/config/DmaapMrConfig.java b/dcae-analytics/dcae-analytics-web/src/main/java/org/onap/dcae/analytics/web/config/DmaapMrConfig.java index 97fdcc5..1fe9e51 100644 --- a/dcae-analytics/dcae-analytics-web/src/main/java/org/onap/dcae/analytics/web/config/DmaapMrConfig.java +++ b/dcae-analytics/dcae-analytics-web/src/main/java/org/onap/dcae/analytics/web/config/DmaapMrConfig.java @@ -63,7 +63,7 @@ import org.springframework.web.client.RestTemplate; public class DmaapMrConfig { private static final String[] DMAAP_MAPPED_REQUEST_HEADERS = - DmaapMrConstants.DMAAP_MAPPED_HEADERS.toArray(new String[DmaapMrConstants.DMAAP_MAPPED_HEADERS.size()]); + DmaapMrConstants.getDmaapmappedHeaders().toArray(new String[DmaapMrConstants.getDmaapmappedHeaders().size()]); @Bean(name = DmaapMrConstants.DMAAP_MR_SUBSCRIBER_OUTPUT_CHANNEL_NAME) public QueueChannel mrSubscriberOutputChannel(final BasicMessageGroupStore basicMessageGroupStore) { diff --git a/dcae-analytics/dcae-analytics-web/src/main/java/org/onap/dcae/analytics/web/dmaap/MrMessageSplitter.java b/dcae-analytics/dcae-analytics-web/src/main/java/org/onap/dcae/analytics/web/dmaap/MrMessageSplitter.java index fe8f7ed..0396005 100644 --- a/dcae-analytics/dcae-analytics-web/src/main/java/org/onap/dcae/analytics/web/dmaap/MrMessageSplitter.java +++ b/dcae-analytics/dcae-analytics-web/src/main/java/org/onap/dcae/analytics/web/dmaap/MrMessageSplitter.java @@ -24,11 +24,9 @@ import static org.apache.commons.text.StringEscapeUtils.unescapeJson; import static org.onap.dcae.analytics.model.AnalyticsHttpConstants.REQUEST_ID_HEADER_KEY; import static org.onap.dcae.analytics.model.AnalyticsModelConstants.ANALYTICS_REQUEST_ID_DELIMITER; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; - import java.io.IOException; import java.util.Collections; +import java.util.Date; import java.util.LinkedList; import java.util.List; import java.util.stream.IntStream; @@ -36,15 +34,22 @@ import java.util.stream.IntStream; import javax.annotation.Nonnull; import javax.annotation.Nullable; +import org.onap.dcae.analytics.model.AnalyticsHttpConstants; import org.onap.dcae.analytics.model.DmaapMrConstants; -import org.onap.dcae.analytics.web.exception.AnalyticsParsingException; +import org.onap.dcae.analytics.tca.core.exception.AnalyticsParsingException; +import org.onap.dcae.analytics.tca.core.util.LogSpec; import org.onap.dcae.analytics.web.util.AnalyticsHttpUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import org.onap.dcae.utils.eelf.logger.api.log.EELFLogFactory; +import org.onap.dcae.utils.eelf.logger.api.log.EELFLogger; +import org.onap.dcae.utils.eelf.logger.api.spec.AuditLogSpec; +import org.onap.dcae.utils.eelf.logger.api.spec.ErrorLogSpec; import org.springframework.integration.splitter.AbstractMessageSplitter; import org.springframework.integration.support.MessageBuilder; import org.springframework.messaging.Message; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; + /** * DMaaP MR message splitter split the incoming messages into batch of given batch size * @@ -52,7 +57,7 @@ import org.springframework.messaging.Message; */ public class MrMessageSplitter extends AbstractMessageSplitter { - private static final Logger logger = LoggerFactory.getLogger(MrMessageSplitter.class); + private static final EELFLogger eelfLogger = EELFLogFactory.getLogger(MrMessageSplitter.class); private final ObjectMapper objectMapper; private final Integer batchSize; @@ -66,18 +71,23 @@ public class MrMessageSplitter extends AbstractMessageSplitter { @Override protected Object splitMessage(final Message message) { - final List dmaapMessages = convertJsonToStringMessages(String.class.cast(message.getPayload()).trim()); - final String requestId = AnalyticsHttpUtils.getRequestId(message.getHeaders()); + final List dmaapMessages = convertJsonToStringMessages(requestId, String.class.cast(message.getPayload()).trim()); + final String transactionId = AnalyticsHttpUtils.getTransactionId(message.getHeaders()); - logger.info("Request Id: {}, Transaction Id: {}, Received new messages from DMaaP MR. Count: {}", - requestId, transactionId, dmaapMessages.size()); + final Date requestBeginTimestamp = AnalyticsHttpUtils.getTimestampFromHeaders(message.getHeaders(), + AnalyticsHttpConstants.REQUEST_BEGIN_TS_HEADER_KEY); + final AuditLogSpec auditLogSpec = LogSpec.createAuditLogSpec(requestId, requestBeginTimestamp); - final List> messagePartitions = partition(dmaapMessages, batchSize); + eelfLogger.auditLog().info("Request Id: {}, Transaction Id: {}, dmaapMessages: {}," + + " Received new messages from DMaaP MR. Count: {}", + auditLogSpec, requestId, transactionId, dmaapMessages.toString(), String.valueOf(dmaapMessages.size())); - logger.debug("Request Id: {}, Transaction Id: {}, Max allowed messages per batch: {}. " + - "No of batches created: {}", requestId, transactionId, batchSize, messagePartitions.size()); + final List> messagePartitions = partition(dmaapMessages, batchSize); + eelfLogger.auditLog().info("Request Id: {}, Transaction Id: {}, Max allowed messages per batch: {}. " + + "No of batches created: {}", + auditLogSpec, requestId, transactionId, String.valueOf(batchSize), String.valueOf(messagePartitions.size())); // append batch id to request id header return messagePartitions.isEmpty() ? null : IntStream.range(0, messagePartitions.size()) @@ -100,7 +110,7 @@ public class MrMessageSplitter extends AbstractMessageSplitter { * * @return List containing DMaaP MR Messages */ - private List convertJsonToStringMessages(@Nullable final String messagesJsonString) { + private List convertJsonToStringMessages(String requestId, @Nullable final String messagesJsonString) { final LinkedList messages = new LinkedList<>(); @@ -128,9 +138,11 @@ public class MrMessageSplitter extends AbstractMessageSplitter { } } catch (IOException e) { - final String errorMessage = String.format("Unable to convert subscriber Json String to Messages. " + + ErrorLogSpec errorLogSpec = LogSpec.createErrorLogSpec(requestId); + eelfLogger.errorLog().error("Unable to convert subscriber Json String to Messages. " + + "Subscriber Response String: {}, Json Error: {}", errorLogSpec, messagesJsonString, e.toString()); + String errorMessage = String.format("Unable to convert subscriber Json String to Messages. " + "Subscriber Response String: %s, Json Error: %s", messagesJsonString, e); - logger.error(errorMessage, e); throw new AnalyticsParsingException(errorMessage, e); } @@ -183,6 +195,4 @@ public class MrMessageSplitter extends AbstractMessageSplitter { } return result; } - - } diff --git a/dcae-analytics/dcae-analytics-web/src/main/java/org/onap/dcae/analytics/web/dmaap/MrSubscriberPollingAdvice.java b/dcae-analytics/dcae-analytics-web/src/main/java/org/onap/dcae/analytics/web/dmaap/MrSubscriberPollingAdvice.java index 33115c5..2ebb38d 100644 --- a/dcae-analytics/dcae-analytics-web/src/main/java/org/onap/dcae/analytics/web/dmaap/MrSubscriberPollingAdvice.java +++ b/dcae-analytics/dcae-analytics-web/src/main/java/org/onap/dcae/analytics/web/dmaap/MrSubscriberPollingAdvice.java @@ -24,9 +24,11 @@ import java.util.concurrent.atomic.AtomicInteger; import org.onap.dcae.analytics.model.AnalyticsHttpConstants; import org.onap.dcae.analytics.model.DmaapMrConstants; +import org.onap.dcae.analytics.tca.core.util.LogSpec; import org.onap.dcae.analytics.web.util.AnalyticsHttpUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import org.onap.dcae.utils.eelf.logger.api.log.EELFLogFactory; +import org.onap.dcae.utils.eelf.logger.api.log.EELFLogger; +import org.onap.dcae.utils.eelf.logger.api.spec.DebugLogSpec; import org.springframework.http.HttpStatus; import org.springframework.integration.handler.advice.AbstractRequestHandlerAdvice; import org.springframework.integration.support.MessageBuilder; @@ -48,7 +50,7 @@ import org.springframework.messaging.Message; */ public class MrSubscriberPollingAdvice extends AbstractRequestHandlerAdvice { - private static final Logger log = LoggerFactory.getLogger(MrSubscriberPollingAdvice.class); + private static final EELFLogger eelfLogger = EELFLogFactory.getLogger(MrSubscriberPollingAdvice.class); private final DynamicPeriodicTrigger trigger; private final int minPollingInterval; @@ -112,17 +114,17 @@ public class MrSubscriberPollingAdvice extends AbstractRequestHandlerAdvice { final String requestId = AnalyticsHttpUtils.getRequestId(message.getHeaders()); final String transactionId = AnalyticsHttpUtils.getTransactionId(message.getHeaders()); - - log.debug("Request Id: {}, Transaction Id: {}, Messages Present: {}, " + - "Next Polling Interval will be: {}", requestId, transactionId, - areMessagesPresent, nextPollingInterval); + final DebugLogSpec debugLogSpec = LogSpec.createDebugLogSpec(requestId); + eelfLogger.debugLog().debug("Request Id: {}, Transaction Id: {}, Messages Present: {}, " + + "Next Polling Interval will be: {}", debugLogSpec, requestId, transactionId, + String.valueOf(areMessagesPresent), nextPollingInterval.toString()); trigger.setPeriod(nextPollingInterval.get()); // if no messages were found in dmaap poll - terminate further processing if (!areMessagesPresent) { - log.info("Request Id: {}, Transaction Id: {}, No new messages found in DMaaP MR Response. " + - "No further processing required", requestId, transactionId); + eelfLogger.debugLog().debug("Request Id: {}, Transaction Id: {}, No new messages found in DMaaP MR Response. " + + "No further processing required", debugLogSpec, requestId, transactionId); return null; } diff --git a/dcae-analytics/dcae-analytics-web/src/main/java/org/onap/dcae/analytics/web/dmaap/MrTriggerMessageProvider.java b/dcae-analytics/dcae-analytics-web/src/main/java/org/onap/dcae/analytics/web/dmaap/MrTriggerMessageProvider.java index 183957d..b537170 100644 --- a/dcae-analytics/dcae-analytics-web/src/main/java/org/onap/dcae/analytics/web/dmaap/MrTriggerMessageProvider.java +++ b/dcae-analytics/dcae-analytics-web/src/main/java/org/onap/dcae/analytics/web/dmaap/MrTriggerMessageProvider.java @@ -26,10 +26,12 @@ import java.util.function.Supplier; import org.onap.dcae.analytics.model.AnalyticsHttpConstants; import org.onap.dcae.analytics.model.util.supplier.UnboundedSupplier; +import org.onap.dcae.analytics.tca.core.util.LogSpec; import org.onap.dcae.analytics.web.util.AnalyticsWebUtils; import org.onap.dcae.analytics.web.util.function.MrSubscriberURLFunction; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import org.onap.dcae.utils.eelf.logger.api.log.EELFLogFactory; +import org.onap.dcae.utils.eelf.logger.api.log.EELFLogger; +import org.onap.dcae.utils.eelf.logger.api.spec.DebugLogSpec; import org.springframework.integration.support.MessageBuilder; import org.springframework.messaging.Message; @@ -40,7 +42,7 @@ import org.springframework.messaging.Message; */ public class MrTriggerMessageProvider { - private static final Logger logger = LoggerFactory.getLogger(MrTriggerMessageProvider.class); + private static final EELFLogger logger = EELFLogFactory.getLogger(MrTriggerMessageProvider.class); public static final String TRIGGER_METHOD_NAME = "getTriggerMessage"; @@ -60,8 +62,9 @@ public class MrTriggerMessageProvider { final String requestId = AnalyticsWebUtils.REQUEST_ID_SUPPLIER.get(); final String transactionId = AnalyticsWebUtils.RANDOM_ID_SUPPLIER.get(); final String beginTimestamp = AnalyticsWebUtils.CREATION_TIMESTAMP_SUPPLIER.get(); - logger.debug("Request Id: {}. Transaction Id: {}. Begin TS: {}. Starting new DMaaP MR Subscriber poll.", - requestId, transactionId, beginTimestamp); + final DebugLogSpec debugLogSpec = LogSpec.createDebugLogSpec(requestId); + logger.debugLog().debug("Request Id: {}. Transaction Id: {}. Begin TS: {}. Starting new DMaaP MR Subscriber poll.", + debugLogSpec, requestId, transactionId, beginTimestamp); return MessageBuilder .withPayload(subscriberUrlSupplier.get().toString()) .setHeader(AnalyticsHttpConstants.REQUEST_ID_HEADER_KEY, requestId) diff --git a/dcae-analytics/dcae-analytics-web/src/main/java/org/onap/dcae/analytics/web/exception/AnalyticsParsingException.java b/dcae-analytics/dcae-analytics-web/src/main/java/org/onap/dcae/analytics/web/exception/AnalyticsParsingException.java deleted file mode 100644 index 1af40f2..0000000 --- a/dcae-analytics/dcae-analytics-web/src/main/java/org/onap/dcae/analytics/web/exception/AnalyticsParsingException.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * ================================================================================ - * Copyright (c) 2018 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========================================================= - * - */ - -package org.onap.dcae.analytics.web.exception; - -/** - * @author Rajiv Singla - */ -public class AnalyticsParsingException extends RuntimeException { - - private static final long serialVersionUID = 1L; - - public AnalyticsParsingException(final String message, final Throwable cause) { - super(message, cause); - } - -} diff --git a/dcae-analytics/dcae-analytics-web/src/main/java/org/onap/dcae/analytics/web/spring/ConfigBindingServiceEnvironmentPostProcessor.java b/dcae-analytics/dcae-analytics-web/src/main/java/org/onap/dcae/analytics/web/spring/ConfigBindingServiceEnvironmentPostProcessor.java index d643de2..31c01b0 100644 --- a/dcae-analytics/dcae-analytics-web/src/main/java/org/onap/dcae/analytics/web/spring/ConfigBindingServiceEnvironmentPostProcessor.java +++ b/dcae-analytics/dcae-analytics-web/src/main/java/org/onap/dcae/analytics/web/spring/ConfigBindingServiceEnvironmentPostProcessor.java @@ -240,7 +240,7 @@ public class ConfigBindingServiceEnvironmentPostProcessor implements Environment // remove config service key prefix on spring reserved property key prefixes final Set springKeyPrefixes = - ConfigBindingServiceConstants.SPRING_RESERVED_PROPERTIES_KEY_PREFIXES; + ConfigBindingServiceConstants.getSpringReservedPropertiesKeyPrefixes(); final Set springKeys = springKeyPrefixes.stream() .map(springKeyPrefix -> configServicePropertiesKey + "." + springKeyPrefix) .collect(Collectors.toSet()); -- cgit 1.2.3-korg