2 * ============LICENSE_START=======================================================
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
11 * http://www.apache.org/licenses/LICENSE-2.0
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=========================================================
24 package org.onap.ccsdk.sli.core.sli;
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;
32 import org.slf4j.Logger;
33 import org.slf4j.LoggerFactory;
40 public class MetricLogger {
42 private static final Logger KARAF = LoggerFactory.getLogger(MetricLogger.class);
43 private static final Logger METRIC = LoggerFactory.getLogger("org.onap.ccsdk.sli.filters.metric");
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";
66 private long beginTimestamp;
67 private String lastMsg = null;
69 public MetricLogger() {
70 beginTimestamp = System.currentTimeMillis();
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);
83 public String getBeginTimestamp() {
84 return MDC.get(BEGIN_TIMESTAMP);
87 private void setBeginTimestamp(long beginTimestamp) {
88 this.beginTimestamp = beginTimestamp;
89 MDC.put(BEGIN_TIMESTAMP, MetricLogger.asIso8601(beginTimestamp));
92 public String getEndTimestamp() {
93 return MDC.get(END_TIMESTAMP);
96 private void setEndTimestamp(long endTimestamp) {
97 // Set MDC with formatted time stamp
98 MDC.put(END_TIMESTAMP, MetricLogger.asIso8601(endTimestamp));
101 setElapsedTime(endTimestamp - beginTimestamp);
105 public String getRequestID() {
106 return MDC.get(REQUEST_ID);
110 public String getServiceInstanceID() {
111 return MDC.get(SERVICE_INSTANCE_ID);
114 private void setServiceInstanceID(String svcInstanceId) {
115 MDC.put(SERVICE_INSTANCE_ID, svcInstanceId);
118 public String getServiceName() {
119 return MDC.get(SERVICE_NAME);
122 private void setServiceName(String svcName) {
123 MDC.put(SERVICE_NAME, svcName);
126 public String getPartnerName() {
127 return MDC.get(PARTNER_NAME);
130 private void setPartnerName(String partnerName) {
131 MDC.put(PARTNER_NAME, partnerName);
134 public String getTargetEntity() {
135 return MDC.get(TARGET_ENTITY);
138 private void setTargetEntity(String targetEntity) {
139 MDC.put(TARGET_ENTITY, targetEntity);
142 public String getTargetServiceName() {
143 return MDC.get(TARGET_SERVICE_NAME);
146 private void setTargetServiceName(String targetServiceName) {
147 MDC.put(TARGET_SERVICE_NAME, targetServiceName);
150 public String getStatusCode() {
151 return MDC.get(STATUS_CODE);
154 private void setStatusCode(String statusCode) {
155 MDC.put(STATUS_CODE, statusCode);
158 public String getResponseCode() {
159 return MDC.get(RESPONSE_CODE);
162 private void setResponseCode(String responseCode) {
163 MDC.put(RESPONSE_CODE, responseCode);
166 public String getResponseDescription() {
167 return MDC.get(RESPONSE_DESCRIPTION);
170 private void setResponseDescription(String responseDesc) {
171 MDC.put(RESPONSE_DESCRIPTION, responseDesc);
174 public String getInstanceUUID() {
175 return MDC.get(INSTANCE_UUID);
178 private void setInstanceUUID(String instanceUUID) {
179 MDC.put(INSTANCE_UUID, instanceUUID);
182 public String getCategoryLogLevel() {
183 return MDC.get(CATEGORY_LOG_LEVEL);
186 private void setCategoryLogLevel(String categoryLogLevel) {
187 MDC.put(CATEGORY_LOG_LEVEL, categoryLogLevel);
190 public String getSeverity() {
191 return MDC.get(SEVERITY);
194 private void setSeverity(String severity) {
195 MDC.put(SEVERITY, severity);
198 public String getServerIpAddress() {
199 return MDC.get(SERVER_IP_ADDRESS);
202 private void setServerIpAddress(String serverIpAddress) {
203 MDC.put(SERVER_IP_ADDRESS, serverIpAddress);
206 public String getElapsedTime() {
207 return MDC.get(ELAPSED_TIME);
210 private void setElapsedTime(long elapsedTime) {
211 MDC.put(ELAPSED_TIME, ""+elapsedTime);
214 public String getServer() {
215 return MDC.get(SERVER);
218 private void setServer(String server) {
219 MDC.put(SERVER, server);
222 public String getClientIp() {
223 return MDC.get(CLIENT_IP);
226 private void setClientIp(String clientIp) {
227 MDC.put(CLIENT_IP, clientIp);
230 public String getClassName() {
231 return MDC.get(CLASS_NAME);
234 private void setClassName(String className) {
235 MDC.put(CLASS_NAME, className);
238 public String getTargetVirtualEntity() {
239 return MDC.get(TARGET_VIRTUAL_ENTITY);
242 private void setTargetVirtualEntity(String targetVirtualEntity) {
243 MDC.put(TARGET_VIRTUAL_ENTITY, targetVirtualEntity);
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'");
250 return df.format(date);
253 public static String asIso8601(long tsInMillis) {
254 return MetricLogger.asIso8601(new Date(tsInMillis));
257 public void logRequest(String svcInstanceId, String svcName, String partnerName, String targetEntity, String targetServiceName, String targetVirtualEntity, String msg) {
259 setBeginTimestamp(System.currentTimeMillis());
261 if (svcInstanceId != null) {
262 setServiceInstanceID(svcInstanceId);
265 if (svcName != null) {
266 setServiceName(svcName);
269 if (partnerName != null) {
270 setPartnerName(partnerName);
273 if (targetEntity != null) {
274 setTargetEntity(targetEntity);
277 if (targetServiceName != null) {
278 setTargetServiceName(targetServiceName);
281 if (targetVirtualEntity != null) {
282 setTargetVirtualEntity(targetVirtualEntity);
290 public void logResponse(String statusCode, String responseCode, String responseDescription) {
291 setEndTimestamp(System.currentTimeMillis());
293 setStatusCode(statusCode);
294 setResponseCode(responseCode);
295 setResponseDescription(responseDescription);
297 METRIC.info(lastMsg);