import java.time.ZoneOffset;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
+import java.time.format.DateTimeFormatterBuilder;
import java.time.temporal.ChronoUnit;
import java.util.Base64;
import java.util.UUID;
private static final String INSTANCE_UUID = UUID.randomUUID().toString();
protected static final String serverIpAddressOverride = "SERVER_IP_ADDRESS_OVERRIDE";
protected static final String serverFqdnOverride = "SERVER_FQDN_OVERRIDE";
+ protected static final String INSTANT_PRECISION_OVERRIDE = "INSTANT_PRECISION_OVERRIDE";
protected static final String checkHeaderLogPattern = "Checking {} header to determine the value of {}";
protected String serverFqdn;
protected String serverIpAddress;
protected String[] prioritizedIdHeadersNames;
protected String[] prioritizedPartnerHeadersNames;
+ protected DateTimeFormatter iso8601Formatter;
public MDCSetup() {
this.prioritizedIdHeadersNames =
this.prioritizedPartnerHeadersNames =
new String[] {HttpHeaders.AUTHORIZATION, ONAPLogConstants.Headers.PARTNER_NAME, HttpHeaders.USER_AGENT};
initServerFqdnandIp();
+ this.iso8601Formatter = createFormatter();
+ }
+
+ protected String getCurrentTimeStamp() {
+ return ZonedDateTime.now(ZoneOffset.UTC).format(iso8601Formatter);
+ }
+
+ protected DateTimeFormatter createFormatter() {
+ DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder();
+ try {
+ Integer instantPrecision = Integer.valueOf(System.getProperty(INSTANT_PRECISION_OVERRIDE, "3"));
+ builder.appendInstant(instantPrecision);
+ } catch (NumberFormatException nfe) {
+ logger.warn("instant precision could not be read and thus won't be set, the default will be used instead."
+ + nfe.getMessage());
+ }
+ return builder.toFormatter();
}
public void setInstanceID() {
}
public void setEntryTimeStamp() {
- MDC.put(ONAPLogConstants.MDCs.ENTRY_TIMESTAMP,
- ZonedDateTime.now(ZoneOffset.UTC).format(DateTimeFormatter.ISO_INSTANT));
+ MDC.put(ONAPLogConstants.MDCs.ENTRY_TIMESTAMP, getCurrentTimeStamp());
}
public String getRequestId(SimpleMap headers) {
}
public void setLogTimestamp() {
- MDC.put(ONAPLogConstants.MDCs.LOG_TIMESTAMP,
- ZonedDateTime.now(ZoneOffset.UTC).format(DateTimeFormatter.ISO_INSTANT));
+ MDC.put(ONAPLogConstants.MDCs.LOG_TIMESTAMP, getCurrentTimeStamp());
}
public void setElapsedTime() {
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.mockito.Mockito.when;
+
+import java.time.ZoneOffset;
+import java.time.ZonedDateTime;
import java.util.HashMap;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.core.HttpHeaders;
assertEquals(nodeName, m.serverFqdn);
}
+ @Test
+ public void testPrecision() {
+ System.setProperty(MDCSetup.INSTANT_PRECISION_OVERRIDE, "3");
+ ZonedDateTime zdt = ZonedDateTime.now(ZoneOffset.UTC);
+ zdt = zdt.withNano(333666999);
+ MDCSetup m = new MDCSetup();
+ String currentTimestamp = m.getCurrentTimeStamp();
+ assertEquals(24, currentTimestamp.length());
+ }
+
}