aboutsummaryrefslogtreecommitdiffstats
path: root/common-app-api/src/main/java/org/openecomp/sdc/common/log/elements/LoggerError.java
blob: 97878ec7a1724d9ad5839c15a5652b0a00218238 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
package org.openecomp.sdc.common.log.elements;

import org.apache.commons.lang3.StringUtils;
import org.openecomp.sdc.common.config.EcompErrorConfiguration;
import org.openecomp.sdc.common.log.api.ILogConfiguration;
import org.openecomp.sdc.common.log.api.ILogFieldsHandler;
import org.openecomp.sdc.common.log.enums.EcompLoggerErrorCode;
import org.openecomp.sdc.common.log.enums.LogLevel;
import org.openecomp.sdc.common.log.enums.LogMarkers;
import org.slf4j.Logger;
import org.slf4j.MarkerFactory;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class LoggerError extends LoggerBase {
    private static ArrayList<String> mandatoryFields = new ArrayList<>(Arrays.asList(
            ILogConfiguration.MDC_KEY_REQUEST_ID,
            ILogConfiguration.MDC_SERVICE_NAME,
            ILogConfiguration.MDC_ERROR_CATEGORY,
            ILogConfiguration.MDC_ERROR_CODE));

    public static final String defaultServiceName = "SDC catalog";

    LoggerError(ILogFieldsHandler ecompMdcWrapper, Logger logger) {
        super(ecompMdcWrapper, MarkerFactory.getMarker(LogMarkers.ERROR_MARKER.text()), logger);
    }

    @Override
    public List<String> getMandatoryFields() {
        return Collections.unmodifiableList(mandatoryFields);
    }

    @Override
    public LoggerError setKeyRequestId(String keyRequestId) {
        return (LoggerError) super.setKeyRequestId(keyRequestId);
    }

    @Override
    public LoggerError startTimer() {
        return this;
    }

    @Override
    public LoggerError clear() {
        ecompLogFieldsHandler.removeErrorCategory();
        ecompLogFieldsHandler.removeErrorDescription();
        ecompLogFieldsHandler.removeErrorCode();
        return this;
    }

    public void log(LogLevel logLevel,
                    EcompLoggerErrorCode errorCodeEnum,
                    String serviceName,
                    String targetEntity,
                    String message, Object...params) {
        fillFieldsBeforeLogging(logLevel, errorCodeEnum, serviceName, targetEntity);
        super.log(logLevel, message, params);
    }

    private void fillFieldsBeforeLogging(LogLevel logLevel, EcompLoggerErrorCode errorCodeEnum, String serviceName, String targetEntity) {
        clear();
        ecompLogFieldsHandler.setErrorCode(errorCodeEnum.getErrorCode());
        ecompLogFieldsHandler.setErrorCategory(logLevel.name());
        if (!StringUtils.isEmpty(targetEntity)) {
            //avoid overriding this parameter in MDC
            ecompLogFieldsHandler.setTargetEntity(targetEntity);
        }
        if (StringUtils.isEmpty(ecompLogFieldsHandler.getServiceName())) {
            ecompLogFieldsHandler.setServiceName(serviceName);
        }
        setKeyRequestIdIfNotSetYet();
    }

    public void log(EcompErrorConfiguration.EcompErrorSeverity errorSeverity,
                    EcompLoggerErrorCode errorCodeEnum,
                    String serviceName,
                    String targetEntity,
                    String message, Object... params) {
        log(convertFromSeverityErrorLevel(errorSeverity), errorCodeEnum, serviceName, targetEntity, message, params);
    }

    public void log(LogLevel logLevel,
                    EcompLoggerErrorCode errorCodeEnum,
                    String serviceName,
                    String message, Object...params) {
        log(logLevel, errorCodeEnum, serviceName, null, message, params);
    }

    public void log(LogLevel logLevel,
                    EcompLoggerErrorCode errorCodeEnum,
                    String serviceName,
                    String message) {
        log(logLevel, errorCodeEnum, serviceName, message);
    }

    @Override
    public void log(LogLevel logLevel, String message, Object...params) {
        log(logLevel, EcompLoggerErrorCode.BUSINESS_PROCESS_ERROR, defaultServiceName, null, message, params);
    }

    public void log(LogLevel logLevel, String message, Throwable throwable) {
        log(logLevel, createErrorMessage(message, throwable));
    }

    public void log(LogLevel logLevel, String message) {
        log(logLevel, EcompLoggerErrorCode.BUSINESS_PROCESS_ERROR, defaultServiceName, null, message);
    }

    public void logInfo(LogLevel logLevel, String message, Object... params) {
        log(logLevel, EcompLoggerErrorCode.SUCCESS, defaultServiceName, null, message, params);
    }

    private LogLevel convertFromSeverityErrorLevel(EcompErrorConfiguration.EcompErrorSeverity severityLevel) {
        switch(severityLevel) {
            case INFO:
                return LogLevel.INFO;
            case FATAL:
                return LogLevel.FATAL;
            case ERROR:
                return LogLevel.ERROR;
            case WARN:
                return LogLevel.WARN;
        }
        return LogLevel.ERROR;
    }

}