Refactor dblib
[ccsdk/sli/core.git] / sli / common / src / main / java / org / onap / ccsdk / sli / core / sli / MetricLogger.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP : CCSDK
4  * ================================================================================
5  * Copyright (C) 2017 ONAP
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 /**
22  *
23  */
24 package org.onap.ccsdk.sli.core.sli;
25
26 import java.net.InetAddress;
27 import java.text.DateFormat;
28 import java.text.SimpleDateFormat;
29 import java.util.Date;
30 import java.util.TimeZone;
31
32 import org.slf4j.Logger;
33 import org.slf4j.LoggerFactory;
34 import org.slf4j.MDC;
35
36 /**
37  * @author dt5972
38  *
39  */
40 public class MetricLogger {
41
42     private static final Logger KARAF = LoggerFactory.getLogger(MetricLogger.class);
43     private static final Logger METRIC = LoggerFactory.getLogger("org.onap.ccsdk.sli.filters.metric");
44
45     public static final String BEGIN_TIMESTAMP = "X-ECOMP-BeginTimestamp";
46     public static final String END_TIMESTAMP = "X-ECOMP-EndTimestamp";
47     public static final String REQUEST_ID = "X-ECOMP-RequestID";
48     public static final String SERVICE_INSTANCE_ID = "X-ECOMP-ServiceInstanceID";
49     public static final String SERVICE_NAME = "X-ECOMP-ServiceName";
50     public static final String PARTNER_NAME = "X-ECOMP-PartnerName";
51     public static final String TARGET_ENTITY = "X-ECOMP-TargetEntity";
52     public static final String TARGET_SERVICE_NAME = "X-ECOMP-TargetServiceName";
53     public static final String STATUS_CODE = "X-ECOMP-StatusCode";
54     public static final String RESPONSE_CODE = "X-ECOMP-ResponseCode";
55     public static final String RESPONSE_DESCRIPTION = "X-ECOMP-ResponseDescription";
56     public static final String INSTANCE_UUID = "X-ECOMP-InstanceUUID";
57     public static final String CATEGORY_LOG_LEVEL = "X-ECOMP-CategoryLogLevel";
58     public static final String SEVERITY = "X-ECOMP-Severity";
59     public static final String SERVER_IP_ADDRESS = "X-ECOMP-ServerIpAddress";
60     public static final String ELAPSED_TIME = "X-ECOMP-ElapsedTime";
61     public static final String SERVER = "X-ECOMP-Server";
62     public static final String CLIENT_IP = "X-ECOMP-ClientIp";
63     public static final String CLASS_NAME = "X-ECOMP-ClassName";
64     public static final String TARGET_VIRTUAL_ENTITY =  "X-ECOMP-TargetVirtualEntity";
65
66     private long beginTimestamp;
67     private String lastMsg = null;
68
69     public MetricLogger() {
70         beginTimestamp = System.currentTimeMillis();
71
72         try {
73             InetAddress localhost = InetAddress.getLocalHost();
74             setServerIpAddress(localhost.getHostAddress());
75             setServer(localhost.getCanonicalHostName());
76         } catch (Exception e) {
77             KARAF.error("Could not get localhost", e);
78         }
79
80     }
81
82
83     public String getBeginTimestamp() {
84         return MDC.get(BEGIN_TIMESTAMP);
85     }
86
87     private void setBeginTimestamp(long beginTimestamp) {
88         this.beginTimestamp = beginTimestamp;
89         MDC.put(BEGIN_TIMESTAMP, MetricLogger.asIso8601(beginTimestamp));
90     }
91
92     public String getEndTimestamp() {
93         return MDC.get(END_TIMESTAMP);
94     }
95
96     private void setEndTimestamp(long endTimestamp) {
97         // Set MDC with formatted time stamp
98         MDC.put(END_TIMESTAMP, MetricLogger.asIso8601(endTimestamp));
99
100         // Set elapsed time
101         setElapsedTime(endTimestamp - beginTimestamp);
102
103     }
104
105     public String getRequestID() {
106         return MDC.get(REQUEST_ID);
107     }
108
109
110     public String getServiceInstanceID() {
111         return MDC.get(SERVICE_INSTANCE_ID);
112     }
113
114     private void setServiceInstanceID(String svcInstanceId) {
115         MDC.put(SERVICE_INSTANCE_ID, svcInstanceId);
116     }
117
118     public String getServiceName() {
119         return MDC.get(SERVICE_NAME);
120     }
121
122     private void setServiceName(String svcName) {
123         MDC.put(SERVICE_NAME, svcName);
124     }
125
126     public String getPartnerName() {
127         return MDC.get(PARTNER_NAME);
128     }
129
130     private void setPartnerName(String partnerName) {
131         MDC.put(PARTNER_NAME, partnerName);
132     }
133
134     public String getTargetEntity() {
135         return MDC.get(TARGET_ENTITY);
136     }
137
138     private void setTargetEntity(String targetEntity) {
139         MDC.put(TARGET_ENTITY, targetEntity);
140     }
141
142     public String getTargetServiceName() {
143         return MDC.get(TARGET_SERVICE_NAME);
144     }
145
146     private void setTargetServiceName(String targetServiceName) {
147         MDC.put(TARGET_SERVICE_NAME, targetServiceName);
148     }
149
150     public String getStatusCode() {
151         return MDC.get(STATUS_CODE);
152     }
153
154     private void setStatusCode(String statusCode) {
155         MDC.put(STATUS_CODE, statusCode);
156     }
157
158     public String getResponseCode() {
159         return MDC.get(RESPONSE_CODE);
160     }
161
162     private void setResponseCode(String responseCode) {
163         MDC.put(RESPONSE_CODE, responseCode);
164     }
165
166     public String getResponseDescription() {
167         return MDC.get(RESPONSE_DESCRIPTION);
168     }
169
170     private void setResponseDescription(String responseDesc) {
171         MDC.put(RESPONSE_DESCRIPTION, responseDesc);
172     }
173
174     public String getInstanceUUID() {
175         return MDC.get(INSTANCE_UUID);
176     }
177
178     private void setInstanceUUID(String instanceUUID) {
179         MDC.put(INSTANCE_UUID, instanceUUID);
180     }
181
182     public String getCategoryLogLevel() {
183         return MDC.get(CATEGORY_LOG_LEVEL);
184     }
185
186     private void setCategoryLogLevel(String categoryLogLevel) {
187         MDC.put(CATEGORY_LOG_LEVEL, categoryLogLevel);
188     }
189
190     public String getSeverity() {
191         return MDC.get(SEVERITY);
192     }
193
194     private void setSeverity(String severity) {
195         MDC.put(SEVERITY, severity);
196     }
197
198     public String getServerIpAddress() {
199         return MDC.get(SERVER_IP_ADDRESS);
200     }
201
202     private void setServerIpAddress(String serverIpAddress) {
203         MDC.put(SERVER_IP_ADDRESS, serverIpAddress);
204     }
205
206     public String getElapsedTime() {
207         return MDC.get(ELAPSED_TIME);
208     }
209
210     private void setElapsedTime(long elapsedTime) {
211         MDC.put(ELAPSED_TIME, ""+elapsedTime);
212     }
213
214     public String getServer() {
215         return MDC.get(SERVER);
216     }
217
218     private void setServer(String server) {
219         MDC.put(SERVER, server);
220     }
221
222     public String getClientIp() {
223         return MDC.get(CLIENT_IP);
224     }
225
226     private void setClientIp(String clientIp) {
227         MDC.put(CLIENT_IP, clientIp);
228     }
229
230     public String getClassName() {
231         return MDC.get(CLASS_NAME);
232     }
233
234     private void setClassName(String className) {
235         MDC.put(CLASS_NAME, className);
236     }
237
238     public String getTargetVirtualEntity() {
239         return MDC.get(TARGET_VIRTUAL_ENTITY);
240     }
241
242     private void setTargetVirtualEntity(String targetVirtualEntity) {
243         MDC.put(TARGET_VIRTUAL_ENTITY, targetVirtualEntity);
244     }
245
246     public static String asIso8601(Date date) {
247         TimeZone tz = TimeZone.getTimeZone("UTC");
248         DateFormat df = new SimpleDateFormat("yyy-MM-dd'T'HH:mm:ss:SS'+00:00'");
249         df.setTimeZone(tz);
250         return df.format(date);
251     }
252
253     public static String asIso8601(long tsInMillis) {
254         return MetricLogger.asIso8601(new Date(tsInMillis));
255     }
256
257     public void logRequest(String svcInstanceId, String svcName, String partnerName, String targetEntity, String targetServiceName,  String targetVirtualEntity, String msg) {
258
259         setBeginTimestamp(System.currentTimeMillis());
260
261         if (svcInstanceId != null) {
262             setServiceInstanceID(svcInstanceId);
263         }
264
265         if (svcName != null) {
266             setServiceName(svcName);
267         }
268
269         if (partnerName != null) {
270             setPartnerName(partnerName);
271         }
272
273         if (targetEntity != null) {
274             setTargetEntity(targetEntity);
275         }
276
277         if (targetServiceName != null) {
278             setTargetServiceName(targetServiceName);
279         }
280
281         if (targetVirtualEntity != null) {
282             setTargetVirtualEntity(targetVirtualEntity);
283         }
284
285         this.lastMsg = msg;
286
287
288     }
289
290     public void logResponse(String statusCode, String responseCode, String responseDescription) {
291         setEndTimestamp(System.currentTimeMillis());
292
293         setStatusCode(statusCode);
294         setResponseCode(responseCode);
295         setResponseDescription(responseDescription);
296
297         METRIC.info(lastMsg);
298
299     }
300 }