summaryrefslogtreecommitdiffstats
path: root/sli/common/src/main/java/org/onap/ccsdk/sli/core/sli/ErrorLogger.java
blob: 47f6526e909084ba06129d02888c75d6a13e2cd7 (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
package org.onap.ccsdk.sli.core.sli;

import org.onap.logging.ref.slf4j.ONAPLogConstants;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.slf4j.MDC;

public class ErrorLogger {
	public static final int ERROR_CODE_100 = 100;
	public static final int ERROR_CODE_200 = 200;
	public static final int ERROR_CODE_300 = 300;
	public static final int ERROR_CODE_400 = 400;
	public static final int ERROR_CODE_500 = 500;
	public static final int ERROR_CODE_900 = 900;

	private static final String DEFAULT_100_DESCRIPTION = "Permission Error";
	private static final String DEFAULT_200_DESCRIPTION = "Availability Error or Timeout";
	private static final String DEFAULT_300_DESCRIPTION = "Data Error";
	private static final String DEFAULT_400_DESCRIPTION = "Schema Error";
	private static final String DEFAULT_500_DESCRIPTION = "Business Process Error";
	private static final String DEFAULT_900_DESCRIPTION = "Unknown Error";
	private Logger log;
	
	public ErrorLogger() {
		this.log = LoggerFactory.getLogger(ErrorLogger.class);
	}
	
	public ErrorLogger(Logger log) {
		this.log = log;	
	}

	public void logError(String message, int errorCode) {
		createLogEntry(message, errorCode, null, null);
	}

	public void logError(String message, int errorCode, Exception e) {
		createLogEntry(message, errorCode, null, e);
	}

	public void logError(String message, int errorCode, String description) {
		createLogEntry(message, errorCode, description, null);
	}

	public void logError(String message, int errorCode, String description, Exception e) {
		createLogEntry(message, errorCode, description, e);
	}

	public void createLogEntry(String message, int errorCode, String description, Exception e) {
		//If the error code isn't valid default it to unknown error code
		if(!isValidCode(errorCode)) {
			errorCode = 900;
		}
	
		MDC.put(ONAPLogConstants.MDCs.ERROR_CODE, String.valueOf(errorCode));

		if (description == null || description.isEmpty()) {
			description = getDefaultDescription(errorCode);
		}

		MDC.put(ONAPLogConstants.MDCs.ERROR_DESC, description);
		if (e != null) {
			log.error(message, e);
		} else {
			log.error(message);
		}
		clearKeys();
	}

	public boolean isValidCode(int errorCode) {
		if (errorCode == ERROR_CODE_100 || errorCode == ERROR_CODE_200 || errorCode == ERROR_CODE_300 || errorCode == ERROR_CODE_400 || errorCode == ERROR_CODE_500
				|| errorCode == ERROR_CODE_900) {
			return true;
		}
		return false;
	}

	public String getDefaultDescription(int errorCode) {
		if (errorCode == ERROR_CODE_100) {
			return DEFAULT_100_DESCRIPTION;
		}
		if (errorCode == ERROR_CODE_200) {
			return DEFAULT_200_DESCRIPTION;
		}
		if (errorCode == ERROR_CODE_300) {
			return DEFAULT_300_DESCRIPTION;
		}
		if (errorCode == ERROR_CODE_400) {
			return DEFAULT_400_DESCRIPTION;
		}
		if (errorCode == ERROR_CODE_500) {
			return DEFAULT_500_DESCRIPTION;
		}
		return DEFAULT_900_DESCRIPTION;
	}

	public void clearKeys() {
		MDC.remove(ONAPLogConstants.MDCs.ERROR_CODE);
		MDC.remove(ONAPLogConstants.MDCs.ERROR_DESC);
	}
}