Fix logging date format to avoid parse error 21/102121/1
authorSatoshi Fujii <fujii-satoshi@jp.fujitsu.com>
Fri, 21 Feb 2020 07:19:55 +0000 (16:19 +0900)
committerSatoshi Fujii <fujii-satoshi@jp.fujitsu.com>
Fri, 21 Feb 2020 07:24:07 +0000 (16:24 +0900)
When MDCSetup class in logging-filter-base tries to calculate an elapsed
time, it expects a datetime is given in ISO format.
But date format in LogFieldsMdcHandler is not compatible with ISO format
therefore 'Unable to calculate elapsed time due to error' occurs.

This change fixes date format in the class
so that the date string can be parsed by logging-filter.

Change-Id: I07c8f103f46493fe0764f904f3f00f66f35dbcf6
Issue-ID: SDC-2767
Signed-off-by: Satoshi Fujii <fujii-satoshi@jp.fujitsu.com>
common-app-logging/src/main/java/org/openecomp/sdc/common/log/elements/LogFieldsMdcHandler.java
common-app-logging/src/test/java/org/openecomp/sdc/common/log/elements/LogFieldsMdcHandlerTest.java

index eb1646c..3deb115 100644 (file)
@@ -27,7 +27,7 @@ public class LogFieldsMdcHandler implements ILogFieldsHandler {
     return instanceMdcWrapper;
   }
 
-  private final static String dateFormatPattern = "yyyy-MM-dd HH:mm:ss.SSSz";
+  private final static String dateFormatPattern = "yyyy-MM-dd'T'HH:mm:ss.SSSz";
   private final DateTimeFormatter dateTimeFormatter = DateTimeFormatter
       .ofPattern(dateFormatPattern);
   protected static Logger log = LoggerFactory.getLogger(LogFieldsMdcHandler.class.getName());
@@ -494,4 +494,4 @@ public class LogFieldsMdcHandler implements ILogFieldsHandler {
     String requestId = LoggerBase.generateKeyRequestId();
     LogFieldsMdcHandler.getInstance().setKeyRequestId(requestId);
   }
-}
\ No newline at end of file
+}
index c6b854e..334a1ed 100644 (file)
 
 package org.openecomp.sdc.common.log.elements;
 
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.openecomp.sdc.common.log.api.ILogConfiguration.MDC_CLASS_NAME;
+import static org.openecomp.sdc.common.log.api.ILogConfiguration.MDC_END_TIMESTAMP;
+import static org.openecomp.sdc.common.log.api.ILogConfiguration.MDC_OPT_FIELD1;
+
+import java.time.ZonedDateTime;
+import java.time.format.DateTimeFormatter;
 import org.junit.Before;
 import org.junit.Test;
 import org.onap.logging.ref.slf4j.ONAPLogConstants;
 import org.slf4j.MDC;
 
-import static org.junit.Assert.*;
-import static org.openecomp.sdc.common.log.api.ILogConfiguration.*;
-
 public class LogFieldsMdcHandlerTest {
 
        private LogFieldsMdcHandler ecompMdcWrapper;
@@ -69,6 +75,15 @@ public class LogFieldsMdcHandlerTest {
                assertFalse(ecompMdcWrapper.isMDCParamEmpty(MDC_END_TIMESTAMP));
        }
 
+       @Test
+       public void stopTimer_shouldTimestampsBeIsoFormat() {
+               ecompMdcWrapper.startAuditTimer();
+               ecompMdcWrapper.stopAuditTimer();
+               // Expect no exceptions thrown
+               ZonedDateTime.parse(MDC.get(ONAPLogConstants.MDCs.ENTRY_TIMESTAMP), DateTimeFormatter.ISO_ZONED_DATE_TIME);
+               ZonedDateTime.parse(MDC.get(MDC_END_TIMESTAMP), DateTimeFormatter.ISO_ZONED_DATE_TIME);
+       }
+
        @Test
        public void clear_shouldRemoveAllMandatoryAndOptionalFields_And_OnlyThem(){
                ecompMdcWrapper.setClassName("class1");