aboutsummaryrefslogtreecommitdiffstats
path: root/sli/common/src/main/java/org/openecomp/sdnc/sli/MetricLogger.java
diff options
context:
space:
mode:
Diffstat (limited to 'sli/common/src/main/java/org/openecomp/sdnc/sli/MetricLogger.java')
-rw-r--r--sli/common/src/main/java/org/openecomp/sdnc/sli/MetricLogger.java283
1 files changed, 283 insertions, 0 deletions
diff --git a/sli/common/src/main/java/org/openecomp/sdnc/sli/MetricLogger.java b/sli/common/src/main/java/org/openecomp/sdnc/sli/MetricLogger.java
new file mode 100644
index 0000000..f664331
--- /dev/null
+++ b/sli/common/src/main/java/org/openecomp/sdnc/sli/MetricLogger.java
@@ -0,0 +1,283 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * openECOMP : SDN-C
+ * ================================================================================
+ * Copyright (C) 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=========================================================
+ */
+
+/**
+ *
+ */
+package org.openecomp.sdnc.sli;
+
+import java.net.InetAddress;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.TimeZone;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.MDC;
+
+/**
+ * @author dt5972
+ *
+ */
+public class MetricLogger {
+
+ private static final Logger KARAF = LoggerFactory.getLogger(MetricLogger.class);
+ private static final Logger METRIC = LoggerFactory.getLogger("org.openecomp.sdnc.filters.metric");
+
+ public static final String BEGIN_TIMESTAMP = "X-ECOMP-BeginTimestamp";
+ public static final String END_TIMESTAMP = "X-ECOMP-EndTimestamp";
+ public static final String REQUEST_ID = "X-ECOMP-RequestID";
+ public static final String SERVICE_INSTANCE_ID = "X-ECOMP-ServiceInstanceID";
+ public static final String SERVICE_NAME = "X-ECOMP-ServiceName";
+ public static final String PARTNER_NAME = "X-ECOMP-PartnerName";
+ public static final String TARGET_ENTITY = "X-ECOMP-TargetEntity";
+ public static final String TARGET_SERVICE_NAME = "X-ECOMP-TargetServiceName";
+ public static final String STATUS_CODE = "X-ECOMP-StatusCode";
+ public static final String RESPONSE_CODE = "X-ECOMP-ResponseCode";
+ public static final String RESPONSE_DESCRIPTION = "X-ECOMP-ResponseDescription";
+ public static final String SEVERITY = "X-ECOMP-Severity";
+ public static final String SERVER_IP_ADDRESS = "X-ECOMP-ServerIpAddress";
+ public static final String ELAPSED_TIME = "X-ECOMP-ElapsedTime";
+ public static final String SERVER = "X-ECOMP-Server";
+ public static final String CLIENT_IP = "X-ECOMP-ClientIp";
+ public static final String CLASS_NAME = "X-ECOMP-ClassName";
+ public static final String TARGET_VIRTUAL_ENTITY = "X-ECOMP-TargetVirtualEntity";
+
+ private long beginTimestamp;
+ private String lastMsg = null;
+
+ public MetricLogger() {
+ beginTimestamp = System.currentTimeMillis();
+
+ try {
+ InetAddress localhost = InetAddress.getLocalHost();
+ setServerIpAddress(localhost.getHostAddress());
+ setServer(localhost.getCanonicalHostName());
+ } catch (Exception e) {
+ KARAF.error("Could not get localhost", e);
+ }
+
+ }
+
+
+ public String getBeginTimestamp() {
+ return MDC.get(BEGIN_TIMESTAMP);
+ }
+
+ private void setBeginTimestamp(long beginTimestamp) {
+ this.beginTimestamp = beginTimestamp;
+ MDC.put(BEGIN_TIMESTAMP, MetricLogger.asIso8601(beginTimestamp));
+ }
+
+ public String getEndTimestamp() {
+ return MDC.get(END_TIMESTAMP);
+ }
+
+ private void setEndTimestamp(long endTimestamp) {
+ // Set MDC with formatted time stamp
+ MDC.put(END_TIMESTAMP, MetricLogger.asIso8601(endTimestamp));
+
+ // Set elapsed time
+ setElapsedTime(endTimestamp - beginTimestamp);
+
+ }
+
+ public String getRequestID() {
+ return MDC.get(REQUEST_ID);
+ }
+
+
+ public String getServiceInstanceID() {
+ return MDC.get(SERVICE_INSTANCE_ID);
+ }
+
+ private void setServiceInstanceID(String svcInstanceId) {
+ MDC.put(SERVICE_INSTANCE_ID, svcInstanceId);
+ }
+
+ public String getServiceName() {
+ return MDC.get(SERVICE_NAME);
+ }
+
+ private void setServiceName(String svcName) {
+ MDC.put(SERVICE_NAME, svcName);
+ }
+
+ public String getPartnerName() {
+ return MDC.get(PARTNER_NAME);
+ }
+
+ private void setPartnerName(String partnerName) {
+ MDC.put(PARTNER_NAME, partnerName);
+ }
+
+ public String getTargetEntity() {
+ return MDC.get(TARGET_ENTITY);
+ }
+
+ private void setTargetEntity(String targetEntity) {
+ MDC.put(TARGET_ENTITY, targetEntity);
+ }
+
+ public String getTargetServiceName() {
+ return MDC.get(TARGET_SERVICE_NAME);
+ }
+
+ private void setTargetServiceName(String targetServiceName) {
+ MDC.put(TARGET_SERVICE_NAME, targetServiceName);
+ }
+
+ public String getStatusCode() {
+ return MDC.get(STATUS_CODE);
+ }
+
+ private void setStatusCode(String statusCode) {
+ MDC.put(STATUS_CODE, statusCode);
+ }
+
+ public String getResponseCode() {
+ return MDC.get(RESPONSE_CODE);
+ }
+
+ private void setResponseCode(String responseCode) {
+ MDC.put(RESPONSE_CODE, responseCode);
+ }
+
+ public String getResponseDescription() {
+ return MDC.get(RESPONSE_DESCRIPTION);
+ }
+
+ private void setResponseDescription(String responseDesc) {
+ MDC.put(RESPONSE_DESCRIPTION, responseDesc);
+ }
+
+ public String getSeverity() {
+ return MDC.get(SEVERITY);
+ }
+
+ private void setSeverity(String severity) {
+ MDC.put(SEVERITY, severity);
+ }
+
+ public String getServerIpAddress() {
+ return MDC.get(SERVER_IP_ADDRESS);
+ }
+
+ private void setServerIpAddress(String serverIpAddress) {
+ MDC.put(SERVER_IP_ADDRESS, serverIpAddress);
+ }
+
+ public String getElapsedTime() {
+ return MDC.get(ELAPSED_TIME);
+ }
+
+ private void setElapsedTime(long elapsedTime) {
+ MDC.put(ELAPSED_TIME, ""+elapsedTime);
+ }
+
+ public String getServer() {
+ return MDC.get(SERVER);
+ }
+
+ private void setServer(String server) {
+ MDC.put(SERVER, server);
+ }
+
+ public String getClientIp() {
+ return MDC.get(CLIENT_IP);
+ }
+
+ private void setClientIp(String clientIp) {
+ MDC.put(CLIENT_IP, clientIp);
+ }
+
+ public String getClassName() {
+ return MDC.get(CLASS_NAME);
+ }
+
+ private void setClassName(String className) {
+ MDC.put(CLASS_NAME, className);
+ }
+
+ public String getTargetVirtualEntity() {
+ return MDC.get(TARGET_VIRTUAL_ENTITY);
+ }
+
+ private void setTargetVirtualEntity(String targetVirtualEntity) {
+ MDC.put(TARGET_VIRTUAL_ENTITY, targetVirtualEntity);
+ }
+
+ public static String asIso8601(Date date) {
+ TimeZone tz = TimeZone.getTimeZone("UTC");
+ DateFormat df = new SimpleDateFormat("yyy-MM-dd'T'HH:mm:ss:SS'+00:00'");
+ df.setTimeZone(tz);
+ return df.format(date);
+ }
+
+ public static String asIso8601(long tsInMillis) {
+ return MetricLogger.asIso8601(new Date(tsInMillis));
+ }
+
+ public void logRequest(String svcInstanceId, String svcName, String partnerName, String targetEntity, String targetServiceName, String targetVirtualEntity, String msg) {
+
+ setBeginTimestamp(System.currentTimeMillis());
+
+ if (svcInstanceId != null) {
+ setServiceInstanceID(svcInstanceId);
+ }
+
+ if (svcName != null) {
+ setServiceName(svcName);
+ }
+
+ if (partnerName != null) {
+ setPartnerName(partnerName);
+ }
+
+ if (targetEntity != null) {
+ setTargetEntity(targetEntity);
+ }
+
+ if (targetServiceName != null) {
+ setTargetServiceName(targetServiceName);
+ }
+
+ if (targetVirtualEntity != null) {
+ setTargetVirtualEntity(targetVirtualEntity);
+ }
+
+ this.lastMsg = msg;
+
+
+ }
+
+ public void logResponse(String statusCode, String responseCode, String responseDescription) {
+ setEndTimestamp(System.currentTimeMillis());
+
+ setStatusCode(statusCode);
+ setResponseCode(responseCode);
+ setResponseDescription(responseDescription);
+
+ METRIC.info(lastMsg);
+
+ }
+}