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