summaryrefslogtreecommitdiffstats
path: root/dcaedt_be/src/main/java/org/onap/sdc/dcae/filter/LoggingFilter.java
diff options
context:
space:
mode:
Diffstat (limited to 'dcaedt_be/src/main/java/org/onap/sdc/dcae/filter/LoggingFilter.java')
-rw-r--r--dcaedt_be/src/main/java/org/onap/sdc/dcae/filter/LoggingFilter.java291
1 files changed, 137 insertions, 154 deletions
diff --git a/dcaedt_be/src/main/java/org/onap/sdc/dcae/filter/LoggingFilter.java b/dcaedt_be/src/main/java/org/onap/sdc/dcae/filter/LoggingFilter.java
index 919d244..84ce0b7 100644
--- a/dcaedt_be/src/main/java/org/onap/sdc/dcae/filter/LoggingFilter.java
+++ b/dcaedt_be/src/main/java/org/onap/sdc/dcae/filter/LoggingFilter.java
@@ -1,21 +1,6 @@
package org.onap.sdc.dcae.filter;
-import static java.net.HttpURLConnection.HTTP_BAD_METHOD;
-import static java.net.HttpURLConnection.HTTP_BAD_REQUEST;
-import static java.net.HttpURLConnection.HTTP_CLIENT_TIMEOUT;
-import static java.net.HttpURLConnection.HTTP_CONFLICT;
-import static java.net.HttpURLConnection.HTTP_ENTITY_TOO_LARGE;
-import static java.net.HttpURLConnection.HTTP_FORBIDDEN;
-import static java.net.HttpURLConnection.HTTP_GONE;
-import static java.net.HttpURLConnection.HTTP_LENGTH_REQUIRED;
-import static java.net.HttpURLConnection.HTTP_NOT_ACCEPTABLE;
-import static java.net.HttpURLConnection.HTTP_NOT_FOUND;
-import static java.net.HttpURLConnection.HTTP_PAYMENT_REQUIRED;
-import static java.net.HttpURLConnection.HTTP_PRECON_FAILED;
-import static java.net.HttpURLConnection.HTTP_PROXY_AUTH;
-import static java.net.HttpURLConnection.HTTP_REQ_TOO_LONG;
-import static java.net.HttpURLConnection.HTTP_UNAUTHORIZED;
-import static java.net.HttpURLConnection.HTTP_UNSUPPORTED_TYPE;
+import static java.net.HttpURLConnection.*;
import java.io.IOException;
import java.util.Locale;
@@ -32,126 +17,129 @@ import javax.servlet.http.HttpServletResponse;
import org.apache.http.impl.EnglishReasonPhraseCatalog;
import org.onap.sdc.common.onaplog.OnapLoggerAudit;
+import org.onap.sdc.common.onaplog.OnapLoggerDebug;
import org.onap.sdc.common.onaplog.OnapMDCWrapper;
import org.onap.sdc.common.onaplog.Enums.OnapLoggerErrorCode;
import org.onap.sdc.common.onaplog.Enums.LogLevel;
public class LoggingFilter implements Filter {
-
- private static final String serviceName = "DCAE-D-BE";
-
- private OnapMDCWrapper commonLoggerArgs = OnapMDCWrapper.getInstance();
- private OnapLoggerAudit auditLogger = OnapLoggerAudit.getInstance();
-
- public LoggingFilter() {
- super();
- }
-
-
- @Override
- public void destroy() {}
-
-
- @Override
- public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain)
- throws IOException, ServletException {
-
- boolean shouldLogRequest = true;
-
- try {
- if (request instanceof HttpServletRequest) {
- HttpServletRequest httpRequest = (HttpServletRequest) request;
- if (httpRequest.getServletPath().equals("/healthCheck")) {
- shouldLogRequest = false;
- }
-
- if (shouldLogRequest) {
- beforeHandle(httpRequest);
- }
- }
- } catch (Exception e) {
- // TODO: log problem with extracting parameters or writing to log
- }
-
- filterChain.doFilter(request, response); // handle request
-
- try {
- if (response instanceof HttpServletResponse && shouldLogRequest) {
- afterHandle((HttpServletResponse) response);
- }
- } catch (Exception e) {
- // TODO: log problem with extracting parameters or writing to log
- }
- }
-
-
- private void beforeHandle(HttpServletRequest request) {
-
- String requestId = getRequestId(request);
- request.setAttribute("requestId", requestId); // making requestId available for the API controllers
- commonLoggerArgs
- .clear()
- .startTimer()
- .setRemoteHost(request.getRemoteAddr())
- .setServiceName(serviceName)
- .setPartnerName(getPartnerName(request.getHeader("USER_ID"), request.getHeader("user-agent")))
- .setKeyRequestId(requestId)
- .setAutoServerIPAddress(request.getLocalAddr())
- .setOptCustomField1(request.getProtocol())
- .setOptCustomField2(request.getMethod())
- .setOptCustomField3(request.getServletPath());
-
- }
-
-
- private static String getRequestId(HttpServletRequest request) {
- String requestId = request.getHeader("X-ECOMP-RequestID");
- return isNullOrEmpty(requestId)
- ? UUID.randomUUID().toString()
- : requestId;
- }
-
-
- private void afterHandle(HttpServletResponse response) {
- String responseDesc = EnglishReasonPhraseCatalog.INSTANCE.getReason(response.getStatus(), Locale.ENGLISH);
- commonLoggerArgs
- .stopTimer()
- .setResponseCode(getLoggingErrorCode(response.getStatus()).getErrorCode())
- .setResponseDesc(responseDesc)
- .setOptCustomField4(Integer.toString(response.getStatus()));
-
- auditLogger
- .setStatusCode(Integer.toString(response.getStatus()))
- .log(LogLevel.INFO, this.getClass().getName(), responseDesc);
- }
-
-
- private OnapLoggerErrorCode getLoggingErrorCode(int httpResponseCode) {
- if (isSuccessError(httpResponseCode)) {
- return OnapLoggerErrorCode.SUCCESS;
- }
- else if (isSchemaError(httpResponseCode)) {
- return OnapLoggerErrorCode.SCHEMA_ERROR;
- }
- else if (isDataError(httpResponseCode)) {
- return OnapLoggerErrorCode.DATA_ERROR;
- }
- else if (isPermissionsError(httpResponseCode)) {
- return OnapLoggerErrorCode.PERMISSION_ERROR;
- }
- else if (isTimeoutOrAvailabilityError(httpResponseCode)) {
- return OnapLoggerErrorCode.AVAILABILITY_TIMEOUTS_ERROR;
- }
- else if (isBusinessProcessError(httpResponseCode)) {
- return OnapLoggerErrorCode.BUSINESS_PROCESS_ERROR;
- }
- else {
- return OnapLoggerErrorCode.UNKNOWN_ERROR;
- }
- }
-
-
- private boolean isTimeoutOrAvailabilityError(int httpResponseCode) {
+
+ private static final String SERVICE_NAME = "DCAE-D-BE";
+
+ private OnapMDCWrapper commonLoggerArgs = OnapMDCWrapper.getInstance();
+ private OnapLoggerAudit auditLogger = OnapLoggerAudit.getInstance();
+ private OnapLoggerDebug onapLoggerDebug = OnapLoggerDebug.getInstance();
+
+ public LoggingFilter() {
+ super();
+ }
+
+
+ @Override
+ public void destroy() {
+ // We have nothing to destroy
+ }
+
+
+ @Override
+ public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain)
+ throws IOException, ServletException {
+
+ boolean shouldLogRequest = true;
+
+ try {
+ if (request instanceof HttpServletRequest) {
+ HttpServletRequest httpRequest = (HttpServletRequest) request;
+ if ("/healthCheck".equals(httpRequest.getServletPath())) {
+ shouldLogRequest = false;
+ }
+
+ if (shouldLogRequest) {
+ beforeHandle(httpRequest);
+ }
+ }
+ } catch (Exception e) {
+ onapLoggerDebug.log(LogLevel.DEBUG,this.getClass().getName(),"Exception:{}",e);
+ }
+
+ filterChain.doFilter(request, response); // handle request
+
+ try {
+ if (response instanceof HttpServletResponse && shouldLogRequest) {
+ afterHandle((HttpServletResponse) response);
+ }
+ } catch (Exception e) {
+ onapLoggerDebug.log(LogLevel.DEBUG,this.getClass().getName(),"Exception:{}",e);
+ }
+ }
+
+
+ private void beforeHandle(HttpServletRequest request) {
+ String requestId = getRequestId(request);
+ request.setAttribute("requestId", requestId); // making requestId available for the API controllers
+ commonLoggerArgs
+ .clear()
+ .startTimer()
+ .setRemoteHost(request.getRemoteAddr())
+ .setServiceName(SERVICE_NAME)
+ .setPartnerName(getPartnerName(request.getHeader("USER_ID"), request.getHeader("user-agent")))
+ .setKeyRequestId(requestId)
+ .setAutoServerIPAddress(request.getLocalAddr())
+ .setOptCustomField1(request.getProtocol())
+ .setOptCustomField2(request.getMethod())
+ .setOptCustomField3(request.getServletPath());
+
+ }
+
+
+ private static String getRequestId(HttpServletRequest request) {
+ String requestId = request.getHeader("X-ECOMP-RequestID");
+ return isNullOrEmpty(requestId)
+ ? UUID.randomUUID().toString()
+ : requestId;
+ }
+
+
+ private void afterHandle(HttpServletResponse response) {
+ String responseDesc = EnglishReasonPhraseCatalog.INSTANCE.getReason(response.getStatus(), Locale.ENGLISH);
+ commonLoggerArgs
+ .stopTimer()
+ .setResponseCode(getLoggingErrorCode(response.getStatus()).getErrorCode())
+ .setResponseDesc(responseDesc)
+ .setOptCustomField4(Integer.toString(response.getStatus()));
+
+ auditLogger
+ .setStatusCode(Integer.toString(response.getStatus()))
+ .log(LogLevel.INFO, this.getClass().getName(), responseDesc);
+ }
+
+
+ private OnapLoggerErrorCode getLoggingErrorCode(int httpResponseCode) {
+ if (isSuccessError(httpResponseCode)) {
+ return OnapLoggerErrorCode.SUCCESS;
+ }
+ else if (isSchemaError(httpResponseCode)) {
+ return OnapLoggerErrorCode.SCHEMA_ERROR;
+ }
+ else if (isDataError(httpResponseCode)) {
+ return OnapLoggerErrorCode.DATA_ERROR;
+ }
+ else if (isPermissionsError(httpResponseCode)) {
+ return OnapLoggerErrorCode.PERMISSION_ERROR;
+ }
+ else if (isTimeoutOrAvailabilityError(httpResponseCode)) {
+ return OnapLoggerErrorCode.AVAILABILITY_TIMEOUTS_ERROR;
+ }
+ else if (isBusinessProcessError(httpResponseCode)) {
+ return OnapLoggerErrorCode.BUSINESS_PROCESS_ERROR;
+ }
+ else {
+ return OnapLoggerErrorCode.UNKNOWN_ERROR;
+ }
+ }
+
+
+ private boolean isTimeoutOrAvailabilityError(int httpResponseCode) {
switch (httpResponseCode) {
case HTTP_BAD_REQUEST:
@@ -160,9 +148,9 @@ public class LoggingFilter implements Filter {
case HTTP_CLIENT_TIMEOUT:
case HTTP_GONE:
return true;
+ default:
+ return false;
}
-
- return false;
}
private boolean isPermissionsError(int httpResponseCode) {
@@ -173,9 +161,9 @@ public class LoggingFilter implements Filter {
case HTTP_BAD_METHOD:
case HTTP_PROXY_AUTH:
return true;
+ default:
+ return false;
}
-
- return false;
}
private boolean isDataError(int httpResponseCode) {
@@ -188,19 +176,13 @@ public class LoggingFilter implements Filter {
case HTTP_ENTITY_TOO_LARGE:
case HTTP_UNSUPPORTED_TYPE:
return true;
+ default:
+ return false;
}
-
- return false;
}
private boolean isSchemaError(int httpResponseCode) {
-
- switch (httpResponseCode) {
- case HTTP_CONFLICT:
- return true;
- }
-
- return false;
+ return httpResponseCode == HTTP_CONFLICT;
}
private boolean isSuccessError(int httpResponseCode) {
@@ -212,13 +194,13 @@ public class LoggingFilter implements Filter {
}
private String getPartnerName(String userId, String userAgent) {
- return (isNullOrEmpty(userId))
- ? getClientApplication(userAgent)
- : userId;
+ return isNullOrEmpty(userId)
+ ? getClientApplication(userAgent)
+ : userId;
}
private String getClientApplication(String userAgent) {
- if (userAgent != null && userAgent.length() > 0) {
+ if (userAgent != null && userAgent.length() > 0) {
if (userAgent.toLowerCase().contains("firefox")) {
return "fireFox_FE";
}
@@ -234,14 +216,15 @@ public class LoggingFilter implements Filter {
return userAgent;
}
return "";
- }
-
+ }
- private static boolean isNullOrEmpty(String str) {
- return (str == null || str.isEmpty());
+ private static boolean isNullOrEmpty(String str) {
+ return str == null || str.isEmpty();
}
- @Override
- public void init(FilterConfig config) throws ServletException {}
+ @Override
+ public void init(FilterConfig config) {
+ // We have nothing to do when initializing
+ }
}