aboutsummaryrefslogtreecommitdiffstats
path: root/reference/logging-filter/logging-filter-base/src/main/java/org/onap/logging/filter/base/MDCSetup.java
diff options
context:
space:
mode:
Diffstat (limited to 'reference/logging-filter/logging-filter-base/src/main/java/org/onap/logging/filter/base/MDCSetup.java')
-rw-r--r--reference/logging-filter/logging-filter-base/src/main/java/org/onap/logging/filter/base/MDCSetup.java175
1 files changed, 98 insertions, 77 deletions
diff --git a/reference/logging-filter/logging-filter-base/src/main/java/org/onap/logging/filter/base/MDCSetup.java b/reference/logging-filter/logging-filter-base/src/main/java/org/onap/logging/filter/base/MDCSetup.java
index a900968..a90f053 100644
--- a/reference/logging-filter/logging-filter-base/src/main/java/org/onap/logging/filter/base/MDCSetup.java
+++ b/reference/logging-filter/logging-filter-base/src/main/java/org/onap/logging/filter/base/MDCSetup.java
@@ -25,6 +25,7 @@ import java.net.UnknownHostException;
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;
@@ -39,25 +40,70 @@ import org.slf4j.MDC;
public class MDCSetup {
protected static Logger logger = LoggerFactory.getLogger(MDCSetup.class);
-
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 =
+ new String[] {ONAPLogConstants.Headers.REQUEST_ID, Constants.HttpHeaders.HEADER_REQUEST_ID,
+ Constants.HttpHeaders.TRANSACTION_ID, Constants.HttpHeaders.ECOMP_REQUEST_ID};
+ 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() {
MDC.put(ONAPLogConstants.MDCs.INSTANCE_UUID, INSTANCE_UUID);
}
- public void setServerFQDN() {
- String serverFQDN = "";
- InetAddress addr = null;
- try {
- addr = InetAddress.getLocalHost();
- serverFQDN = addr.getCanonicalHostName();
- MDC.put(ONAPLogConstants.MDCs.SERVER_IP_ADDRESS, addr.getHostAddress());
- } catch (UnknownHostException e) {
- logger.warn("Cannot Resolve Host Name");
- serverFQDN = "";
+ protected void initServerFqdnandIp() {
+ serverFqdn = getProperty(serverFqdnOverride);
+ serverIpAddress = getProperty(serverIpAddressOverride);
+
+ if (serverIpAddress.equals(Constants.DefaultValues.UNKNOWN)
+ || serverFqdn.equals(Constants.DefaultValues.UNKNOWN)) {
+ try {
+ InetAddress addr = InetAddress.getLocalHost();
+ if (serverFqdn.equals(Constants.DefaultValues.UNKNOWN)) {
+ serverFqdn = addr.getCanonicalHostName();
+ }
+ if (serverIpAddress.equals(Constants.DefaultValues.UNKNOWN)) {
+ serverIpAddress = addr.getHostAddress();
+ }
+ } catch (UnknownHostException e) {
+ logger.trace("Cannot Resolve Host Name." + e.getMessage());
+ }
}
- MDC.put(ONAPLogConstants.MDCs.SERVER_FQDN, serverFQDN);
+ }
+
+ public void setServerFQDN() {
+ MDC.put(ONAPLogConstants.MDCs.SERVER_FQDN, serverFqdn);
+ MDC.put(ONAPLogConstants.MDCs.SERVER_IP_ADDRESS, serverIpAddress);
}
public void setClientIPAddress(HttpServletRequest httpServletRequest) {
@@ -76,35 +122,18 @@ public class MDCSetup {
}
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) {
- logger.trace("Checking X-ONAP-RequestID header for requestId.");
- String requestId = headers.get(ONAPLogConstants.Headers.REQUEST_ID);
- if (requestId != null && !requestId.isEmpty()) {
- return requestId;
- }
-
- logger.trace("No valid X-ONAP-RequestID header value. Checking X-RequestID header for requestId.");
- requestId = headers.get(Constants.HttpHeaders.HEADER_REQUEST_ID);
- if (requestId != null && !requestId.isEmpty()) {
- return requestId;
- }
-
- logger.trace("No valid X-RequestID header value. Checking X-TransactionID header for requestId.");
- requestId = headers.get(Constants.HttpHeaders.TRANSACTION_ID);
- if (requestId != null && !requestId.isEmpty()) {
- return requestId;
- }
-
- logger.trace("No valid X-TransactionID header value. Checking X-ECOMP-RequestID header for requestId.");
- requestId = headers.get(Constants.HttpHeaders.ECOMP_REQUEST_ID);
- if (requestId != null && !requestId.isEmpty()) {
- return requestId;
+ String requestId = null;
+ for (String headerName : this.prioritizedIdHeadersNames) {
+ logger.trace(checkHeaderLogPattern, headerName, ONAPLogConstants.Headers.REQUEST_ID);
+ requestId = headers.get(headerName);
+ if (requestId != null && !requestId.isEmpty()) {
+ return requestId;
+ }
}
-
logger.trace("No valid requestId headers. Generating requestId: {}", requestId);
return UUID.randomUUID().toString();
}
@@ -113,13 +142,7 @@ public class MDCSetup {
String invocationId = headers.get(ONAPLogConstants.Headers.INVOCATION_ID);
if (invocationId == null || invocationId.isEmpty())
invocationId = UUID.randomUUID().toString();
- MDC.put(ONAPLogConstants.MDCs.INVOCATION_ID, invocationId);
- }
-
- public void setInvocationIdFromMDC() {
- String invocationId = MDC.get(ONAPLogConstants.MDCs.INVOCATION_ID);
- if (invocationId == null || invocationId.isEmpty())
- invocationId = UUID.randomUUID().toString();
+ MDC.put(ONAPLogConstants.MDCs.SERVER_INVOCATION_ID, invocationId);
MDC.put(ONAPLogConstants.MDCs.INVOCATION_ID, invocationId);
}
@@ -129,40 +152,26 @@ public class MDCSetup {
}
protected String getMDCPartnerName(SimpleMap headers) {
- String checkHeaderLogPattern = "Checking {} header to determine the value of {}";
-
- logger.trace(checkHeaderLogPattern, HttpHeaders.AUTHORIZATION, ONAPLogConstants.MDCs.PARTNER_NAME);
- String partnerName = getBasicAuthUserName(headers);
- if (partnerName != null && !partnerName.isEmpty()) {
- return partnerName;
- }
-
- logger.trace(checkHeaderLogPattern, ONAPLogConstants.Headers.PARTNER_NAME, ONAPLogConstants.MDCs.PARTNER_NAME);
- partnerName = headers.get(ONAPLogConstants.Headers.PARTNER_NAME);
- if (partnerName != null && !partnerName.isEmpty()) {
- return partnerName;
- }
-
- logger.trace(checkHeaderLogPattern, HttpHeaders.USER_AGENT, ONAPLogConstants.MDCs.PARTNER_NAME);
- partnerName = headers.get(HttpHeaders.USER_AGENT);
- if (partnerName != null && !partnerName.isEmpty()) {
- return partnerName;
- }
+ String partnerName = null;
+ for (String headerName : prioritizedPartnerHeadersNames) {
+ logger.trace(checkHeaderLogPattern, headerName, ONAPLogConstants.MDCs.PARTNER_NAME);
+ if (headerName.equals(HttpHeaders.AUTHORIZATION)) {
+ partnerName = getBasicAuthUserName(headers);
+ } else {
+ partnerName = headers.get(headerName);
+ }
+ if (partnerName != null && !partnerName.isEmpty()) {
+ return partnerName;
+ }
- logger.trace(checkHeaderLogPattern, Constants.HttpHeaders.CLIENT_ID, ONAPLogConstants.MDCs.PARTNER_NAME);
- partnerName = headers.get(Constants.HttpHeaders.CLIENT_ID);
- if (partnerName != null && !partnerName.isEmpty()) {
- return partnerName;
}
-
logger.trace("{} value could not be determined, defaulting partnerName to {}.",
ONAPLogConstants.MDCs.PARTNER_NAME, Constants.DefaultValues.UNKNOWN);
return Constants.DefaultValues.UNKNOWN;
}
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() {
@@ -176,7 +185,7 @@ public class MDCSetup {
MDC.put(ONAPLogConstants.MDCs.ELAPSED_TIME,
Long.toString(ChronoUnit.MILLIS.between(entryTimestamp, endTimestamp)));
} catch (Exception e) {
- logger.warn("Unable to calculate elapsed time due to error: {}", e.getMessage());
+ logger.trace("Unable to calculate elapsed time due to error: {}", e.getMessage());
}
}
@@ -191,7 +200,7 @@ public class MDCSetup {
MDC.put(ONAPLogConstants.MDCs.ELAPSED_TIME,
Long.toString(ChronoUnit.MILLIS.between(entryTimestamp, endTimestamp)));
} catch (Exception e) {
- logger.warn("Unable to calculate elapsed time due to error: {}", e.getMessage());
+ logger.trace("Unable to calculate elapsed time due to error: {}", e.getMessage());
}
}
@@ -202,7 +211,7 @@ public class MDCSetup {
} else {
statusCode = ONAPLogConstants.ResponseStatus.ERROR.toString();
setErrorCode(code);
- setErrorDesc(code);
+ setErrorDescription(code);
}
MDC.put(ONAPLogConstants.MDCs.RESPONSE_STATUS_CODE, statusCode);
}
@@ -212,7 +221,7 @@ public class MDCSetup {
}
public void clearClientMDCs() {
- MDC.remove(ONAPLogConstants.MDCs.INVOCATION_ID);
+ MDC.remove(ONAPLogConstants.MDCs.CLIENT_INVOCATION_ID);
MDC.remove(ONAPLogConstants.MDCs.RESPONSE_DESCRIPTION);
MDC.remove(ONAPLogConstants.MDCs.RESPONSE_STATUS_CODE);
MDC.remove(ONAPLogConstants.MDCs.RESPONSE_CODE);
@@ -224,15 +233,27 @@ public class MDCSetup {
}
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) {