change audit and metric formats in feature-controlloop-trans 89/108989/5
authorJoseph Chou <jc2555@att.com>
Tue, 9 Jun 2020 18:14:56 +0000 (14:14 -0400)
committerJoseph Chou <jc2555@att.com>
Mon, 15 Jun 2020 18:03:40 +0000 (14:03 -0400)
logging enhancement

Issue-ID: POLICY-2579
Change-Id: Id1e0230d3cd2ac6d921be86f127f3721c65f3e52
Signed-off-by: Joseph Chou <jc2555@att.com>
controlloop/common/feature-controlloop-trans/src/main/java/org/onap/policy/drools/apps/controlloop/feature/trans/CacheBasedControlLoopMetricsManager.java
controlloop/common/feature-controlloop-trans/src/test/resources/logback.xml

index 75e0f1f..956d28e 100644 (file)
@@ -28,10 +28,12 @@ import java.time.Instant;
 import java.time.ZonedDateTime;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 import java.util.Properties;
 import java.util.UUID;
 import java.util.concurrent.TimeUnit;
 import org.apache.commons.collections4.CollectionUtils;
+import org.onap.policy.controlloop.ControlLoopNotificationType;
 import org.onap.policy.controlloop.ControlLoopOperation;
 import org.onap.policy.controlloop.VirtualControlLoopNotification;
 import org.onap.policy.drools.persistence.SystemPersistenceConstants;
@@ -54,6 +56,22 @@ class CacheBasedControlLoopMetricsManager implements ControlLoopMetrics {
 
     private long transactionTimeout = ControlLoopMetricsFeature.CL_CACHE_TRANS_TIMEOUT_SECONDS_DEFAULT;
 
+    /**
+     * Numeric response code.
+     */
+    private static final Map<String, String> note2code = Map.of(
+        ControlLoopNotificationType.ACTIVE.name(), "100",
+        ControlLoopNotificationType.REJECTED.name(), "200",
+        ControlLoopNotificationType.OPERATION.name(), "300",
+        ControlLoopNotificationType.OPERATION_SUCCESS.name(), "301",
+        ControlLoopNotificationType.OPERATION_FAILURE.name(), "302",
+        ControlLoopNotificationType.FINAL_FAILURE.name(), "400",
+        ControlLoopNotificationType.FINAL_SUCCESS.name(), "401",
+        ControlLoopNotificationType.FINAL_OPENLOOP.name(), "402"
+    );
+
+    private static final String UNKNOWN_RESPONSE_CODE = "900";
+
     public CacheBasedControlLoopMetricsManager() {
 
         Properties properties = SystemPersistenceConstants.getManager()
@@ -288,7 +306,11 @@ class CacheBasedControlLoopMetricsManager implements ControlLoopMetrics {
                     + ":" + notification.getPolicyName() + ":" + notification.getPolicyVersion())
                 .setProcessKey("" + notification.getAai())
                 .setTargetEntity(notification.getTargetType() + "." + notification.getTarget())
-                .setResponseCode((notification.getNotification() != null) ? notification.getNotification().name() : "-")
+                .setResponseCode((notification.getNotification() != null)
+                    ? notificationTypeToResponseCode(notification.getNotification().name())
+                    : UNKNOWN_RESPONSE_CODE)
+                .setCustomField1((notification.getNotification() != null)
+                    ? notification.getNotification().name() : "")
                 .setResponseDescription(notification.getMessage())
                 .setClientIpAddress(notification.getClosedLoopEventClient());
     }
@@ -362,4 +384,13 @@ class CacheBasedControlLoopMetricsManager implements ControlLoopMetrics {
                        + getCacheOccupancy()
                        + "}";
     }
+
+    private String notificationTypeToResponseCode(String notificationType) {
+        String code = note2code.get(notificationType);
+        if (code != null) {
+            return code;
+        } else {
+            return UNKNOWN_RESPONSE_CODE;
+        }
+    }
 }
index 6a25769..f2acc70 100644 (file)
@@ -2,7 +2,7 @@
   ============LICENSE_START=======================================================
   policy-management
   ================================================================================
-  Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved.
+  Copyright (C) 2017-2020 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.
@@ -20,7 +20,7 @@
 
 <configuration scan="true" scanPeriod="30 seconds" debug="false">
 
-    <property name="logDir" value="target/test-classes" />
+    <property name="logDir" value="logs" />
 
     <property name="errorLog" value="error" />
     <property name="debugLog" value="debug" />
@@ -37,9 +37,9 @@
         value="[%d{yyyy-MM-dd'T'HH:mm:ss.SSS+00:00, UTC}] [%X{networkEventType:-NULL}|%X{networkProtocol:-NULL}|%X{networkTopic:-NULL}|%X{requestID:-NULL}]%n" />
 
     <property name="metricPattern"
-        value="%X{RequestID}|%X{InvocationID}|%X{ServiceName}|%X{PartnerName}|%X{BeginTimestamp}|%X{EndTimestamp}|%X{ElapsedTime}|%X{ServiceInstanceID}|%X{VirtualServerName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDescription}|%X{InstanceUUID}|%X{Severity}|%X{TargetEntity}|%X{TargetServiceName}|%X{Server}|%X{ServerIPAddress}|%X{ServerFQDN}|%X{ClientIPAddress}|%X{ProcessKey}|%X{RemoteHost}||%X{TargetVirtualEntity}|%level|%thread| %msg%n" />
-    <property name="transactionPattern" value="${metricPattern}" />
-
+        value="%X{BeginTimestamp}|%X{EndTimestamp}|%X{RequestID}|%X{ServiceInstanceId}|%thread|%X{ServerName}|%X{ServiceName}|%X{PartnerName}|%X{TargetEntity:-NA}|%X{TargetServiceName:-NA}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDescription}|%X{InstanceUUID}|%.-5level|%X{Severity}|%X{ServerIPAddress}|%X{ElapsedTime}|%X{ServerFQDN}|%X{RemoteHost}|%class||%X{ProcessKey}|%X{TargetVirtualEntity}|%X{CustomField1}|%X{CustomField2}|%X{CustomField3}|%X{CustomField4}|%msg%n" />
+    <property name="transactionPattern"
+        value="%X{BeginTimestamp}|%X{EndTimestamp}|%X{RequestID}|%X{ServiceInstanceId}|%thread|%X{ServerName}|%X{ServiceName}|%X{PartnerName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDescription}|%X{InstanceUUID}|%.-5level|%X{Severity}|%X{ServerIPAddress}|%X{ElapsedTime}|%X{ServerFQDN}|%X{RemoteHost}|%class|%X{ProcessKey}|%X{CustomField1}|%X{CustomField2}|%X{CustomField3}|%X{CustomField4}|%msg%n" />
     <appender name="ErrorOut" class="ch.qos.logback.core.rolling.RollingFileAppender">
         <file>${logDir}/${errorLog}.log</file>
         <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">