Catalog alignment
[sdc.git] / common-app-logging / src / main / java / org / openecomp / sdc / common / log / elements / LoggerError.java
1 package org.openecomp.sdc.common.log.elements;
2
3 import org.apache.commons.lang3.StringUtils;
4 import org.onap.logging.ref.slf4j.ONAPLogConstants;
5 import org.openecomp.sdc.common.log.api.ILogConfiguration;
6 import org.openecomp.sdc.common.log.api.ILogFieldsHandler;
7 import org.openecomp.sdc.common.log.enums.EcompErrorSeverity;
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.LogMarkers;
11 import org.slf4j.Logger;
12 import org.slf4j.MarkerFactory;
13
14 import java.util.ArrayList;
15 import java.util.Arrays;
16 import java.util.Collections;
17 import java.util.List;
18
19 public class LoggerError extends LoggerBase {
20     private static ArrayList<String> mandatoryFields = new ArrayList<>(Arrays.asList(
21             ONAPLogConstants.MDCs.REQUEST_ID,
22             ONAPLogConstants.MDCs.SERVICE_NAME,
23             ILogConfiguration.MDC_ERROR_CATEGORY,
24             ILogConfiguration.MDC_ERROR_CODE));
25
26     public static final String defaultServiceName = "SDC catalog";
27
28     LoggerError(ILogFieldsHandler ecompMdcWrapper, Logger logger) {
29         super(ecompMdcWrapper, MarkerFactory.getMarker(LogMarkers.ERROR_MARKER.text()), logger);
30     }
31
32     @Override
33     public List<String> getMandatoryFields() {
34         return Collections.unmodifiableList(mandatoryFields);
35     }
36
37     @Override
38     public LoggerError setKeyRequestId(String keyRequestId) {
39         return (LoggerError) super.setKeyRequestId(keyRequestId);
40     }
41
42     @Override
43     public LoggerError startTimer() {
44         return this;
45     }
46
47     @Override
48     public LoggerError clear() {
49         ecompLogFieldsHandler.removeErrorCategory();
50         ecompLogFieldsHandler.removeErrorDescription();
51         ecompLogFieldsHandler.removeErrorCode();
52         return this;
53     }
54
55     public void log(LogLevel logLevel,
56                     EcompLoggerErrorCode errorCodeEnum,
57                     String serviceName,
58                     String targetEntity,
59                     String message, Object...params) {
60         fillFieldsBeforeLogging(logLevel, errorCodeEnum, serviceName, targetEntity, null);
61         super.log(logLevel, message, params);
62     }
63
64     public void log(LogLevel logLevel,
65                     EcompLoggerErrorCode errorCodeEnum,
66                     String serviceName,
67                     ErrorLogOptionalData errorLogOptionalData,
68                     String description,
69                     Object...params) {
70         fillFieldsBeforeLogging(logLevel, errorCodeEnum, serviceName,
71                 errorLogOptionalData.getTargetEntity(), errorLogOptionalData.getTargetServiceName());
72         super.log(logLevel, description, params);
73     }
74
75     private void fillFieldsBeforeLogging(LogLevel logLevel, EcompLoggerErrorCode errorCodeEnum, String serviceName, String targetEntity, String targetServiceName) {
76         clear();
77         ecompLogFieldsHandler.setErrorCode(errorCodeEnum.getErrorCode());
78         ecompLogFieldsHandler.setErrorCategory(logLevel.name());
79
80         ecompLogFieldsHandler.setTargetEntity(targetEntity);
81         ecompLogFieldsHandler.setTargetServiceName(targetServiceName);
82
83         if (StringUtils.isEmpty(ecompLogFieldsHandler.getServiceName())) {
84             ecompLogFieldsHandler.setServiceName(serviceName);
85         }
86
87         setKeyRequestIdIfNotSetYet();
88     }
89
90     public void log(EcompErrorSeverity errorSeverity,
91                     EcompLoggerErrorCode errorCodeEnum,
92                     String serviceName,
93                     String targetEntity,
94                     String message, Object... params) {
95         log(convertFromSeverityErrorLevel(errorSeverity), errorCodeEnum, serviceName, targetEntity, message, params);
96     }
97
98     public void log(LogLevel logLevel,
99                     EcompLoggerErrorCode errorCodeEnum,
100                     String serviceName,
101                     String message, Object...params) {
102         log(logLevel, errorCodeEnum, serviceName, (String)null, message, params);
103     }
104
105     public void log(LogLevel logLevel,
106                     EcompLoggerErrorCode errorCodeEnum,
107                     String serviceName,
108                     String message) {
109         log(logLevel, errorCodeEnum, serviceName, message);
110     }
111
112     @Override
113     public void log(LogLevel logLevel, String message, Object...params) {
114         log(logLevel, EcompLoggerErrorCode.BUSINESS_PROCESS_ERROR, defaultServiceName, (String)null, message, params);
115     }
116
117     public void log(LogLevel logLevel, String message, Throwable throwable) {
118         log(logLevel, createErrorMessage(message, throwable));
119     }
120
121     public void log(LogLevel logLevel, String message) {
122         log(logLevel, EcompLoggerErrorCode.BUSINESS_PROCESS_ERROR, defaultServiceName, (String)null, message);
123     }
124
125     public void logInfo(LogLevel logLevel, String message, Object... params) {
126         log(logLevel, EcompLoggerErrorCode.SUCCESS, defaultServiceName, (String)null, message, params);
127     }
128
129     private LogLevel convertFromSeverityErrorLevel(EcompErrorSeverity severityLevel) {
130         switch(severityLevel) {
131             case INFO:
132                 return LogLevel.INFO;
133             case FATAL:
134                 return LogLevel.FATAL;
135             case ERROR:
136                 return LogLevel.ERROR;
137             case WARN:
138                 return LogLevel.WARN;
139         }
140         return LogLevel.ERROR;
141     }
142
143 }