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() {
} else {
statusCode = ONAPLogConstants.ResponseStatus.ERROR.toString();
setErrorCode(code);
- setErrorDesc(code);
+ setErrorDescription(code);
}
MDC.put(ONAPLogConstants.MDCs.RESPONSE_STATUS_CODE, statusCode);
}
}
public void setResponseDescription(int statusCode) {
- MDC.put(ONAPLogConstants.MDCs.RESPONSE_DESCRIPTION, Response.Status.fromStatusCode(statusCode).toString());
+ MDC.put(ONAPLogConstants.MDCs.RESPONSE_DESCRIPTION, extractDescription(statusCode));
+ }
+
+ private String extractDescription(int statusCode) {
+ Response.Status responseStatus = Response.Status.fromStatusCode(statusCode);
+ if (responseStatus != null) {
+ return responseStatus.toString();
+ }
+ CustomResponseStatus customResponseStatus = CustomResponseStatus.fromStatusCode(statusCode);
+ if (customResponseStatus != null) {
+ return customResponseStatus.toString();
+ }
+ return String.format("Unknown description for response code %d.", statusCode);
}
public void setErrorCode(int statusCode) {
MDC.put(ONAPLogConstants.MDCs.ERROR_CODE, String.valueOf(statusCode));
}
- public void setErrorDesc(int statusCode) {
- MDC.put(ONAPLogConstants.MDCs.ERROR_DESC, Response.Status.fromStatusCode(statusCode).toString());
+ public void setErrorDescription(int statusCode) {
+ MDC.put(ONAPLogConstants.MDCs.ERROR_DESC, extractDescription(statusCode));
}
public String getProperty(String property) {