Refactoring Consolidation Service
[sdc.git] / common-app-api / src / main / java / org / openecomp / sdc / common / ecomplogwrapper / EcompLoggerSdcAudit.java
1 package org.openecomp.sdc.common.ecomplogwrapper;
2
3 import javax.servlet.http.HttpServletRequest;
4 import javax.ws.rs.container.ContainerRequestContext;
5 import javax.ws.rs.core.MultivaluedMap;
6 import javax.ws.rs.core.Response;
7
8 import org.openecomp.sdc.common.api.Constants;
9 import org.openecomp.sdc.common.ecomplog.EcompLoggerAudit;
10 import org.openecomp.sdc.common.ecomplog.Enums.LogLevel;
11 import org.openecomp.sdc.common.ecomplog.Enums.Severity;
12 import org.slf4j.MDC;
13
14
15 /**
16  * Created by dd4296 on 12/19/2017.
17  *
18  * audit log for asdc using the ecomplog library
19  * this is adapted for filter classes
20  */
21 public class EcompLoggerSdcAudit extends EcompLoggerSdcUtilBase {
22
23     private static String AUDIT_ON = "auditOn";
24     private String className;
25
26     public EcompLoggerSdcAudit(String className) {
27         this.className = className;
28     }
29
30     public void startLog() {
31         EcompLoggerAudit
32                 .getInstance()
33                 .clear()
34                 .startTimer();
35         MDC.put(AUDIT_ON, "true");
36     }
37
38     public static boolean isFlowBeingTakenCare(){
39         try
40         {
41             if (MDC.get(AUDIT_ON).equals("true")){
42                 return true;
43             }
44             return false;
45         }
46         catch (Exception E)
47         {
48             return false;
49         }
50     }
51
52     public void log(HttpServletRequest sr,
53                     ContainerRequestContext requestContext,
54                     Response.StatusType statusInfo,
55                     MultivaluedMap<String, Object> responseHeaders,
56                     LogLevel errorLevel,
57                     Severity securityLevel,
58                     String message) {
59
60         try {
61             EcompLoggerAudit.getInstance()
62                     .stopTimer()
63                     .setRemoteHost(sr.getRemoteAddr())
64                     .setServiceName(getServiceName(requestContext))
65                     .setResponseCode(convertHttpCodeToErrorCode(statusInfo.getStatusCode()))
66                     .setStatusCode(Integer.toString(statusInfo.getStatusCode()))
67                     .setResponseDesc(statusInfo.getReasonPhrase())
68                     .setKeyRequestId(getRequestIDfromHeaders(responseHeaders.get(Constants.X_ECOMP_REQUEST_ID_HEADER)))
69
70                     .setPartnerName(getPartnerName(
71                             requestContext.getHeaderString("user-agent"),
72                             requestContext.getHeaderString("USER_ID"),
73                             getUrl(requestContext)))
74
75                     .setInstanceUUID(requestContext.getHeaderString(Constants.X_ECOMP_INSTANCE_ID_HEADER))
76
77                     .setOptServiceInstanceId(requestContext.getHeaderString(Constants.X_ECOMP_SERVICE_ID_HEADER))
78                     .setOptClassName(className)
79                     .setOptAlertSeverity(securityLevel)
80                     .setOptCustomField1(requestContext.getMethod() + ": " + getUrl(requestContext))
81                     .setOptCustomField2(Integer.toString(statusInfo.getStatusCode()))
82                     .log(errorLevel, message);
83         }
84         catch (Exception E)
85         {
86             log.warn("Faild to write to Audit Log. Original Message: {}", message);
87         }
88         finally {
89             MDC.put(AUDIT_ON,"false");
90         }
91     }
92 }