1 package org.onap.so.logging.spring.interceptor;
3 import java.util.Collections;
6 import java.util.stream.Collectors;
7 import javax.servlet.http.HttpServletRequest;
8 import javax.servlet.http.HttpServletResponse;
9 import javax.ws.rs.core.Context;
10 import javax.ws.rs.core.Response;
11 import javax.ws.rs.ext.Providers;
12 import org.onap.logging.ref.slf4j.ONAPLogConstants;
13 import org.onap.so.logging.jaxrs.filter.MDCSetup;
14 import org.slf4j.Logger;
15 import org.slf4j.LoggerFactory;
17 import org.springframework.beans.factory.annotation.Autowired;
18 import org.springframework.stereotype.Component;
19 import org.springframework.web.servlet.ModelAndView;
20 import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
23 public class LoggingInterceptor extends HandlerInterceptorAdapter {
25 Logger logger = LoggerFactory.getLogger(LoggingInterceptor.class);
31 private Providers providers;
34 public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
36 Map<String, String> headers = Collections.list(((HttpServletRequest) request).getHeaderNames())
38 .collect(Collectors.toMap(h -> h, request::getHeader));
39 setRequestId(headers);
40 setInvocationId(headers);
41 setServiceName(request);
42 setMDCPartnerName(headers);
43 mdcSetup.setClientIPAddress(request);
44 mdcSetup.setEntryTimeStamp();
45 mdcSetup.setInstanceUUID();
46 mdcSetup.setServerFQDN();
47 MDC.put(ONAPLogConstants.MDCs.RESPONSE_STATUS_CODE, "INPROGRESS");
48 logger.info(ONAPLogConstants.Markers.ENTRY, "Entering");
53 public void postHandle(
54 HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView)
56 setResponseStatusCode(response);
57 MDC.put(ONAPLogConstants.MDCs.RESPONSE_DESCRIPTION,"");
58 MDC.put(ONAPLogConstants.MDCs.RESPONSE_CODE,String.valueOf(response.getStatus()));
59 logger.info(ONAPLogConstants.Markers.EXIT, "Exiting.");
63 private void setResponseStatusCode(HttpServletResponse response) {
65 if(Response.Status.Family.familyOf(response.getStatus()).equals(Response.Status.Family.SUCCESSFUL)){
66 statusCode=ONAPLogConstants.ResponseStatus.COMPLETED.toString();
68 statusCode= ONAPLogConstants.ResponseStatus.ERROR.toString();
70 MDC.put(ONAPLogConstants.MDCs.RESPONSE_STATUS_CODE, statusCode);
73 private void setServiceName(HttpServletRequest request) {
74 MDC.put(ONAPLogConstants.MDCs.SERVICE_NAME, request.getRequestURI());
77 private void setRequestId(Map<String, String> headers) {
78 String requestId=headers.get(ONAPLogConstants.Headers.REQUEST_ID);
79 if(requestId == null || requestId.isEmpty())
80 requestId = UUID.randomUUID().toString();
81 MDC.put(ONAPLogConstants.MDCs.REQUEST_ID,requestId);
84 private void setInvocationId(Map<String, String> headers) {
85 String invocationId = headers.get(ONAPLogConstants.Headers.INVOCATION_ID);
86 if(invocationId == null || invocationId.isEmpty())
87 invocationId =UUID.randomUUID().toString();
88 MDC.put(ONAPLogConstants.MDCs.INVOCATION_ID, invocationId);
91 private void setMDCPartnerName(Map<String, String> headers) {
92 String partnerName=headers.get(ONAPLogConstants.Headers.PARTNER_NAME);
93 if(partnerName == null || partnerName.isEmpty())
95 MDC.put(ONAPLogConstants.MDCs.PARTNER_NAME,partnerName);