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