CSIT Fix for SDC-2585
[sdc.git] / common-app-api / src / main / java / org / openecomp / sdc / common / log / elements / LoggerError.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * SDC
4  * ================================================================================
5  * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.openecomp.sdc.common.log.elements;
22
23 import org.apache.commons.lang3.StringUtils;
24 import org.openecomp.sdc.common.config.EcompErrorConfiguration;
25 import org.openecomp.sdc.common.log.api.ILogConfiguration;
26 import org.openecomp.sdc.common.log.api.ILogFieldsHandler;
27 import org.openecomp.sdc.common.log.enums.EcompLoggerErrorCode;
28 import org.openecomp.sdc.common.log.enums.LogLevel;
29 import org.openecomp.sdc.common.log.enums.LogMarkers;
30 import org.slf4j.Logger;
31 import org.slf4j.MarkerFactory;
32
33 import java.util.ArrayList;
34 import java.util.Arrays;
35 import java.util.Collections;
36 import java.util.List;
37
38 public class LoggerError extends LoggerBase {
39     private static ArrayList<String> mandatoryFields = new ArrayList<>(Arrays.asList(
40             ILogConfiguration.MDC_KEY_REQUEST_ID,
41             ILogConfiguration.MDC_SERVICE_NAME,
42             ILogConfiguration.MDC_ERROR_CATEGORY,
43             ILogConfiguration.MDC_ERROR_CODE));
44
45     public static final String defaultServiceName = "SDC catalog";
46
47     LoggerError(ILogFieldsHandler ecompMdcWrapper, Logger logger) {
48         super(ecompMdcWrapper, MarkerFactory.getMarker(LogMarkers.ERROR_MARKER.text()), logger);
49     }
50
51     @Override
52     public List<String> getMandatoryFields() {
53         return Collections.unmodifiableList(mandatoryFields);
54     }
55
56     @Override
57     public LoggerError setKeyRequestId(String keyRequestId) {
58         return (LoggerError) super.setKeyRequestId(keyRequestId);
59     }
60
61     @Override
62     public LoggerError startTimer() {
63         return this;
64     }
65
66     @Override
67     public LoggerError clear() {
68         ecompLogFieldsHandler.removeErrorCategory();
69         ecompLogFieldsHandler.removeErrorDescription();
70         ecompLogFieldsHandler.removeErrorCode();
71         return this;
72     }
73
74     public void log(LogLevel logLevel,
75                     EcompLoggerErrorCode errorCodeEnum,
76                     String serviceName,
77                     String targetEntity,
78                     String message, Object... params) {
79         fillFieldsBeforeLogging(logLevel, errorCodeEnum, serviceName, targetEntity);
80         super.log(logLevel, message, params);
81     }
82
83     private void fillFieldsBeforeLogging(LogLevel logLevel, EcompLoggerErrorCode errorCodeEnum, String serviceName, String targetEntity) {
84         clear();
85         ecompLogFieldsHandler.setErrorCode(errorCodeEnum.getErrorCode());
86         ecompLogFieldsHandler.setErrorCategory(logLevel.name());
87         if (!StringUtils.isEmpty(targetEntity)) {
88             //avoid overriding this parameter in MDC
89             ecompLogFieldsHandler.setTargetEntity(targetEntity);
90         }
91         if (StringUtils.isEmpty(ecompLogFieldsHandler.getServiceName())) {
92             ecompLogFieldsHandler.setServiceName(serviceName);
93         }
94         setKeyRequestIdIfNotSetYet();
95     }
96
97     public void log(EcompErrorConfiguration.EcompErrorSeverity errorSeverity,
98                     EcompLoggerErrorCode errorCodeEnum,
99                     String serviceName,
100                     String targetEntity,
101                     String message, Object... params) {
102         log(convertFromSeverityErrorLevel(errorSeverity), errorCodeEnum, serviceName, targetEntity, message, params);
103     }
104
105     public void log(LogLevel logLevel,
106                     EcompLoggerErrorCode errorCodeEnum,
107                     String serviceName,
108                     String message, Object... params) {
109         log(logLevel, errorCodeEnum, serviceName, null, message, params);
110     }
111
112     public void log(LogLevel logLevel,
113                     EcompLoggerErrorCode errorCodeEnum,
114                     String serviceName,
115                     String message) {
116         log(logLevel, errorCodeEnum, serviceName, message);
117     }
118
119     @Override
120     public void log(LogLevel logLevel, String message, Object... params) {
121         log(logLevel, EcompLoggerErrorCode.BUSINESS_PROCESS_ERROR, defaultServiceName, null, message, params);
122     }
123
124     public void log(LogLevel logLevel, String message, Throwable throwable) {
125         log(logLevel, createErrorMessage(message, throwable));
126     }
127
128     public void log(LogLevel logLevel, String message) {
129         log(logLevel, EcompLoggerErrorCode.BUSINESS_PROCESS_ERROR, defaultServiceName, null, message);
130     }
131
132     public void logInfo(LogLevel logLevel, String message, Object... params) {
133         log(logLevel, EcompLoggerErrorCode.SUCCESS, defaultServiceName, null, message, params);
134     }
135
136     private LogLevel convertFromSeverityErrorLevel(EcompErrorConfiguration.EcompErrorSeverity severityLevel) {
137         switch (severityLevel) {
138             case INFO:
139                 return LogLevel.INFO;
140             case FATAL:
141                 return LogLevel.FATAL;
142             case ERROR:
143                 return LogLevel.ERROR;
144             case WARN:
145                 return LogLevel.WARN;
146             default:
147                 return LogLevel.ERROR;
148         }
149     }
150
151 }