416af8fff175514148abbfb8c5167884f617988a
[sdc.git] /
1 /*
2  * Copyright © 2016-2018 European Support Limited
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 package org.openecomp.sdc.logging.slf4j;
18
19 import org.openecomp.sdc.logging.api.AuditData;
20 import org.openecomp.sdc.logging.api.Logger;
21 import org.slf4j.LoggerFactory;
22 import org.slf4j.MDC;
23
24 import java.text.SimpleDateFormat;
25 import java.util.Date;
26
27 import static org.openecomp.sdc.logging.slf4j.SLF4JLoggingServiceProvider.PREFIX;
28
29 /**
30  * @author EVITALIY
31  * @since 08 Jan 18
32  */
33 class SLF4JLoggerWrapper implements Logger {
34
35     private static final String BEGIN_TIMESTAMP = PREFIX + "BeginTimestamp";
36     private static final String END_TIMESTAMP = PREFIX + "EndTimestamp";
37     private static final String ELAPSED_TIME = PREFIX + "ElapsedTime";
38     private static final String STATUS_CODE = PREFIX + "StatusCode";
39     private static final String RESPONSE_CODE = PREFIX + "ResponseCode";
40     private static final String RESPONSE_DESCRIPTION = PREFIX + "ResponsDescription";
41     private static final String CLIENT_IP_ADDRESS = PREFIX + "ClientIpAddress";
42
43     //The specified format presents time in UTC formatted per ISO 8601, as required by ONAP logging guidelines
44     private final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
45     private final org.slf4j.Logger logger;
46
47     SLF4JLoggerWrapper(Class<?> clazz) {
48         logger = LoggerFactory.getLogger(clazz);
49     }
50
51     SLF4JLoggerWrapper(String className) {
52         logger = LoggerFactory.getLogger(className);
53     }
54
55     @Override
56     public String getName() {
57         return logger.getName();
58     }
59
60     @Override
61     public boolean isMetricsEnabled() {
62         return logger.isInfoEnabled(Markers.METRICS);
63     }
64
65     @Override
66     public void metrics(String msg) {
67         logger.info(Markers.METRICS, msg);
68     }
69
70     @Override
71     public void metrics(String msg, Object arg) {
72         logger.info(Markers.METRICS, msg, arg);
73     }
74
75     @Override
76     public void metrics(String msg, Object arg1, Object arg2) {
77         logger.info(Markers.METRICS, msg, arg1, arg2);
78     }
79
80     @Override
81     public void metrics(String msg, Object... arguments) {
82         logger.info(Markers.METRICS, msg, arguments);
83     }
84
85     @Override
86     public void metrics(String msg, Throwable t) {
87         logger.info(Markers.METRICS, msg, t);
88     }
89
90     @Override
91     public boolean isAuditEnabled() {
92         return logger.isInfoEnabled(Markers.AUDIT);
93     }
94
95     @Override
96     public void audit(AuditData data) {
97
98         if (data == null) {
99             return;
100         }
101
102         MDC.put(BEGIN_TIMESTAMP, DATE_FORMAT.format(new Date(data.getStartTime())));
103         MDC.put(END_TIMESTAMP,   DATE_FORMAT.format(new Date(data.getEndTime())));
104         MDC.put(ELAPSED_TIME,    String.valueOf(data.getEndTime() - data.getStartTime()));
105
106         if (data.getStatusCode() != null) {
107             MDC.put(STATUS_CODE, data.getStatusCode() == AuditData.StatusCode.COMPLETE ? "COMPLETE" : "ERROR");
108         }
109
110         if (data.getResponseCode() != null) {
111             MDC.put(RESPONSE_CODE, data.getResponseCode());
112         }
113
114         if (data.getResponseDescription() != null) {
115             MDC.put(RESPONSE_DESCRIPTION, data.getResponseDescription());
116         }
117
118         if (data.getClientIpAddress() != null) {
119             MDC.put(CLIENT_IP_ADDRESS, data.getClientIpAddress());
120         }
121
122         try {
123             logger.info(Markers.AUDIT, "");
124         } finally {
125             MDC.remove(BEGIN_TIMESTAMP);
126             MDC.remove(END_TIMESTAMP);
127             MDC.remove(ELAPSED_TIME);
128             MDC.remove(STATUS_CODE);
129             MDC.remove(RESPONSE_CODE);
130             MDC.remove(RESPONSE_DESCRIPTION);
131             MDC.remove(CLIENT_IP_ADDRESS);
132         }
133     }
134
135     @Override
136     public boolean isDebugEnabled() {
137         return logger.isDebugEnabled();
138     }
139
140     @Override
141     public void debug(String msg) {
142         logger.debug(msg);
143     }
144
145     @Override
146     public void debug(String format, Object arg) {
147         logger.debug(format, arg);
148     }
149
150     @Override
151     public void debug(String format, Object arg1, Object arg2) {
152         logger.debug(format, arg1, arg2);
153     }
154
155     @Override
156     public void debug(String format, Object... arguments) {
157         logger.debug(format, arguments);
158     }
159
160     @Override
161     public void debug(String msg, Throwable t) {
162         logger.debug(msg, t);
163     }
164
165     @Override
166     public boolean isInfoEnabled() {
167         return logger.isInfoEnabled();
168     }
169
170     @Override
171     public void info(String msg) {
172         logger.info(msg);
173     }
174
175     @Override
176     public void info(String format, Object arg) {
177         logger.info(format, arg);
178     }
179
180     @Override
181     public void info(String format, Object arg1, Object arg2) {
182         logger.info(format, arg1, arg2);
183     }
184
185     @Override
186     public void info(String format, Object... arguments) {
187         logger.info(format, arguments);
188     }
189
190     @Override
191     public void info(String msg, Throwable t) {
192         logger.info(msg, t);
193     }
194
195     @Override
196     public boolean isWarnEnabled() {
197         return logger.isWarnEnabled();
198     }
199
200     @Override
201     public void warn(String msg) {
202         logger.warn(msg);
203     }
204
205     @Override
206     public void warn(String format, Object arg) {
207         logger.warn(format, arg);
208     }
209
210     @Override
211     public void warn(String format, Object... arguments) {
212         logger.warn(format, arguments);
213     }
214
215     @Override
216     public void warn(String format, Object arg1, Object arg2) {
217         logger.warn(format, arg1, arg2);
218     }
219
220     @Override
221     public void warn(String msg, Throwable t) {
222         logger.warn(msg, t);
223     }
224
225     @Override
226     public boolean isErrorEnabled() {
227         return logger.isErrorEnabled();
228     }
229
230     @Override
231     public void error(String msg) {
232         logger.error(msg);
233     }
234
235     @Override
236     public void error(String format, Object arg) {
237         logger.error(format, arg);
238     }
239
240     @Override
241     public void error(String format, Object arg1, Object arg2) {
242         logger.error(format, arg1, arg2);
243     }
244
245     @Override
246     public void error(String format, Object... arguments) {
247         logger.error(format, arguments);
248     }
249
250     @Override
251     public void error(String msg, Throwable t) {
252         logger.error(msg, t);
253     }
254 }