diff options
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.java | 291 |
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 + } } |