import java.text.DateFormat;
import java.text.SimpleDateFormat;
+import java.time.ZoneOffset;
+import java.time.ZonedDateTime;
+import java.time.format.DateTimeFormatter;
+import java.time.temporal.ChronoUnit;
import java.util.Date;
import java.util.TimeZone;
import org.onap.logging.ref.slf4j.ONAPLogConstants;
}
+ @Deprecated
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'");
return df.format(date);
}
+ @Deprecated
public static String asIso8601(long tsInMillis) {
return MetricLogger.asIso8601(new Date(tsInMillis));
}
public void logRequest(String svcInstanceId, String targetEntity, String targetServiceName, String targetElement,
String msg) {
- long start = System.currentTimeMillis();
- MDC.put(ONAPLogConstants.MDCs.INVOKE_TIMESTAMP, MetricLogger.asIso8601(start));
-
+ String timeNow = ZonedDateTime.now(ZoneOffset.UTC).format(DateTimeFormatter.ISO_INSTANT);
+ MDC.put(ONAPLogConstants.MDCs.INVOKE_TIMESTAMP, timeNow);
+ MDC.put(ONAPLogConstants.MDCs.ENTRY_TIMESTAMP, timeNow);
+
if (svcInstanceId != null) {
MDC.put(ONAPLogConstants.MDCs.SERVICE_INSTANCE_ID, svcInstanceId);
}
METRIC.info(INVOKE, "Invoke");
}
- public void logResponse(String statusCode, String responseCode, String responseDescription) {
- long start = System.currentTimeMillis();
- MDC.put(ONAPLogConstants.MDCs.INVOKE_TIMESTAMP, MetricLogger.asIso8601(start));
+ public void logResponse(String statusCode, String responseCode, String responseDescription) {
+ String timeNow = ZonedDateTime.now(ZoneOffset.UTC).format(DateTimeFormatter.ISO_INSTANT);
+ MDC.put(ONAPLogConstants.MDCs.INVOKE_TIMESTAMP, timeNow);
if (statusCode != null) {
MDC.put(ONAPLogConstants.MDCs.RESPONSE_STATUS_CODE, statusCode);
if (responseDescription != null) {
MDC.put(ONAPLogConstants.MDCs.RESPONSE_DESCRIPTION, formatString(responseDescription));
}
- long end = System.currentTimeMillis();
- MDC.put(ONAPLogConstants.MDCs.LOG_TIMESTAMP, MetricLogger.asIso8601(end));
- MDC.put(ONAPLogConstants.MDCs.ELAPSED_TIME, Long.toString(end - start));
+ ZonedDateTime endTime = ZonedDateTime.now(ZoneOffset.UTC);
+ MDC.put(ONAPLogConstants.MDCs.LOG_TIMESTAMP, endTime.format(DateTimeFormatter.ISO_INSTANT));
+ try {
+ DateTimeFormatter timeFormatter = DateTimeFormatter.ISO_ZONED_DATE_TIME;
+ ZonedDateTime entryTimestamp =
+ ZonedDateTime.parse(MDC.get(ONAPLogConstants.MDCs.ENTRY_TIMESTAMP), timeFormatter);
+ String elapedTime = Long.toString(ChronoUnit.MILLIS.between(entryTimestamp, endTime));
+ MDC.put(ONAPLogConstants.MDCs.ELAPSED_TIME,elapedTime);
+ } catch (Exception e) {
+ //pass
+ }
METRIC.info(INVOKE_RETURN, formatString(lastMsg));
resetContext();
}
import static org.junit.Assert.*;
import java.util.Date;
+import java.util.UUID;
+
import org.junit.Before;
import org.junit.Test;
+import org.onap.logging.ref.slf4j.ONAPLogConstants;
+import org.slf4j.MDC;
public class TestMetricLogger {
@Before
public void setUp() throws Exception {
-
logger = new MetricLogger();
- logger.resetContext();
- logger.logRequest("svcInstance1", "svcName", "svcPartner", "targetEntity", "targetServiceName", "targetVirtualEntity", "hello-world");
- logger.logResponse("200", "200", "SUCCESS");
-
+ MetricLogger.resetContext();
}
@Test
public final void testGetRequestID() {
- logger.getRequestID();
+ UUID uuid = UUID.randomUUID();
+ MDC.put(ONAPLogConstants.MDCs.REQUEST_ID, uuid.toString());
+ assertEquals(uuid.toString(),logger.getRequestID());
+ }
+
+ @Test
+ public final void elapsedTime() {
+ logger.logRequest("svcInstance1", "svcName", "svcPartner", "targetEntity", "targetServiceName", "targetVirtualEntity", "hello-world");
+ logger.logResponse("200", "200", "SUCCESS");
+ Long elapsedTime = Long.valueOf(MDC.get(ONAPLogConstants.MDCs.ELAPSED_TIME));
+ assertNotNull(elapsedTime);
+ assertTrue(elapsedTime > 1);
}
@Test