Catalog alignment
[sdc.git] / common-app-logging / src / main / java / org / openecomp / sdc / common / log / wrappers / LoggerSdcAudit.java
1 package org.openecomp.sdc.common.log.wrappers;
2
3 import org.apache.commons.lang3.StringUtils;
4 import org.onap.logging.ref.slf4j.ONAPLogConstants;
5 import org.openecomp.sdc.common.log.enums.ConstantsLogging;
6 import org.openecomp.sdc.common.log.elements.LoggerAudit;
7 import org.openecomp.sdc.common.log.elements.LoggerFactory;
8 import org.openecomp.sdc.common.log.enums.EcompLoggerErrorCode;
9 import org.openecomp.sdc.common.log.enums.LogLevel;
10 import org.openecomp.sdc.common.log.enums.Severity;
11 import org.openecomp.sdc.common.log.utils.LoggingThreadLocalsHolder;
12 import org.slf4j.MDC;
13 import org.slf4j.Marker;
14
15 import javax.ws.rs.container.ContainerRequestContext;
16 import javax.ws.rs.core.Response;
17 import java.util.UUID;
18
19
20 /**
21  * Created by dd4296 on 12/19/2017.
22  *
23  * audit log for asdc using the log library
24  * this is adapted for filter classes
25  */
26 public class LoggerSdcAudit extends LoggerSdcUtilBase {
27
28     private static String AUDIT_ON = "auditOn";
29     private String className;
30     private final LoggerAudit ecompLoggerAudit;
31
32     public LoggerSdcAudit(Class<?> clazz) {
33         this.className = clazz.getName();
34         ecompLoggerAudit = LoggerFactory.getMdcLogger(LoggerAudit.class, org.slf4j.LoggerFactory.getLogger(clazz));
35     }
36
37     public void startLog(ContainerRequestContext requestContext) {
38         ecompLoggerAudit.clear()
39                 .startTimer()
40                 .setPartnerName(getPartnerName(
41                         requestContext.getHeaderString("user-agent"),
42                         requestContext.getHeaderString("USER_ID"),
43                         getUrl(requestContext),
44                         requestContext.getHeaderString("X-ONAP-PartnerName")))
45                 .setServiceName(getServiceName(requestContext))
46                 .setKeyRequestId(LoggingThreadLocalsHolder.getUuid())
47                 .setKeyInvocationId(UUID.randomUUID().toString());
48         MDC.put(AUDIT_ON, "true");
49     }
50
51     public void startAuditFetchLog(String partnerName, String serviceName) {
52         ecompLoggerAudit.clear()
53                 .startTimer()
54                 .setPartnerName(partnerName)
55                 .setServiceName(serviceName)
56                 .setOptClassName(serviceName);
57         MDC.put(AUDIT_ON, "true");
58     }
59
60     public static boolean isFlowBeingTakenCare() {
61         String auditOn = MDC.get(AUDIT_ON);
62         return !StringUtils.isEmpty(auditOn) && "true".equals(auditOn);
63     }
64
65     //this function clears the MDC data that relevant for this class
66     public void clearMyData(){
67         ecompLoggerAudit.clear();
68     }
69
70     public void logExit(String remoteAddress,
71                         ContainerRequestContext requestContext,
72                         Response.StatusType statusInfo,
73                         LogLevel logLevel,
74                         Severity securityLevel,
75                         String message,
76                         Marker marker) {
77
78         try {
79
80             String msg = ecompLoggerAudit.getAuditMessage() == null ?
81                     message : ecompLoggerAudit.getAuditMessage();
82             ecompLoggerAudit.stopTimer()
83                     .setRemoteHost(remoteAddress)
84                     .setResponseCode(convertHttpCodeToErrorCode(statusInfo.getStatusCode()))
85                     .setStatusCodeByResponseCode(Integer.toString(statusInfo.getStatusCode()))
86                     .setResponseDesc(statusInfo.getReasonPhrase())
87                     .setInstanceUUID(requestContext.getHeaderString(ConstantsLogging.X_ECOMP_INSTANCE_ID_HEADER))
88                     .setOptServiceInstanceId(requestContext.getHeaderString(ConstantsLogging.X_ECOMP_SERVICE_ID_HEADER))
89                     .setOptClassName(className)
90                     .setOptAlertSeverity(securityLevel)
91                     .log(marker, logLevel, msg);
92         }
93         catch (Exception e) {
94             log.warn("Failed to write to Audit Log. Original Message: {}", message, e);
95         }
96         finally {
97             MDC.put(AUDIT_ON,"false");
98         }
99     }
100
101     public void logEntry(String remoteAddress,
102                           ContainerRequestContext requestContext,
103                           LogLevel logLevel,
104                           Severity securityLevel,
105                           String message,
106                           Marker marker) {
107
108         try {
109
110             String msg = ecompLoggerAudit.getAuditMessage() == null ?
111                     message : ecompLoggerAudit.getAuditMessage();
112             ecompLoggerAudit.stopTimer()
113                     .setRemoteHost(remoteAddress)
114                     .setResponseCode(EcompLoggerErrorCode.SUCCESS)
115                     .setStatusCode(ONAPLogConstants.ResponseStatus.INPROGRESS.name())
116                     .setResponseDesc("")
117                     .setInstanceUUID(requestContext.getHeaderString(ConstantsLogging.X_ECOMP_INSTANCE_ID_HEADER))
118                     .setOptServiceInstanceId(requestContext.getHeaderString(ConstantsLogging.X_ECOMP_SERVICE_ID_HEADER))
119                     .setOptClassName(className)
120                     .setOptAlertSeverity(securityLevel)
121                     .log(marker, logLevel, msg);
122         }
123         catch (Exception e) {
124             log.warn("Failed to write to Audit Log. Original Message: {}", message, e);
125         }
126         finally {
127             MDC.put(AUDIT_ON,"false");
128         }
129     }
130
131     public void logEntry(LogLevel logLevel,
132                          Severity securityLevel,
133                          String message,
134                          Marker marker,
135                          String requestId) {
136
137         try {
138
139             String msg = ecompLoggerAudit.getAuditMessage() == null ?
140                     message : ecompLoggerAudit.getAuditMessage();
141             ecompLoggerAudit.stopTimer()
142                     .setKeyRequestId(requestId)
143                     .setResponseCode(EcompLoggerErrorCode.SUCCESS)
144                     .setStatusCode(ONAPLogConstants.ResponseStatus.COMPLETE.name())
145                     .setResponseDesc("")
146                     .setOptAlertSeverity(securityLevel)
147                     .log(marker, logLevel, msg);
148         }
149         catch (Exception e) {
150             log.warn("Failed to write to Audit Log. Original Message: {}", message, e);
151         }
152         finally {
153             MDC.put(AUDIT_ON,"false");
154         }
155     }
156
157 }