* ============LICENSE_START=======================================================\r
* ONAP CLAMP\r
* ================================================================================\r
- * Copyright (C) 2017 AT&T Intellectual Property. All rights\r
+ * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights\r
* reserved.\r
* ================================================================================\r
* Licensed under the Apache License, Version 2.0 (the "License");\r
* limitations under the License.\r
* ============LICENSE_END============================================\r
* ===================================================================\r
- * ECOMP is a trademark and service mark of AT&T Intellectual Property.\r
+ * \r
*/\r
\r
package org.onap.clamp.clds.util;\r
\r
+import java.net.InetAddress;\r
+import java.net.UnknownHostException;\r
import java.text.DateFormat;\r
import java.text.SimpleDateFormat;\r
import java.util.Date;\r
import java.util.TimeZone;\r
import java.util.UUID;\r
-\r
+import javax.validation.constraints.NotNull;\r
import org.apache.log4j.MDC;\r
\r
+import com.att.eelf.configuration.EELFLogger;\r
+import com.att.eelf.configuration.EELFManager;\r
+\r
/**\r
* This class handles the special info that appear in the log, like RequestID,\r
* time context, ...\r
- *\r
*/\r
-public class LoggingUtils {\r
+public final class LoggingUtils {\r
+ \r
+ protected static final EELFLogger logger = EELFManager.getInstance().getLogger(LoggingUtils.class);\r
+\r
+ private static final DateFormat DATE_FORMAT = createDateFormat();\r
+\r
+ /**\r
+ * Private constructor to avoid creating instances of util class.\r
+ */\r
+ private LoggingUtils() {\r
+ }\r
\r
/**\r
* Set request related logging variables in thread local data via MDC\r
- * \r
- * @param service\r
- * Service Name of API (ex. "PUT template")\r
- * @param partner\r
- * Partner name (client or user invoking API)\r
+ *\r
+ * @param service Service Name of API (ex. "PUT template")\r
+ * @param partner Partner name (client or user invoking API)\r
*/\r
public static void setRequestContext(String service, String partner) {\r
MDC.put("RequestId", UUID.randomUUID().toString());\r
MDC.put("ServiceName", service);\r
MDC.put("PartnerName", partner);\r
+ //Defaulting to HTTP/1.1 protocol\r
+ MDC.put("Protocol", "HTTP/1.1");\r
+ try {\r
+ MDC.put("ServerFQDN", InetAddress.getLocalHost().getCanonicalHostName());\r
+ MDC.put("ServerIPAddress", InetAddress.getLocalHost().getHostAddress());\r
+ } catch (UnknownHostException e) {\r
+ logger.error("Failed to initiate setRequestContext", e);\r
+ }\r
}\r
\r
/**\r
* Set time related logging variables in thread local data via MDC.\r
- * \r
- * @param beginTimeStamp\r
- * Start time\r
- * @param endTimeStamp\r
- * End time\r
+ *\r
+ * @param beginTimeStamp Start time\r
+ * @param endTimeStamp End time\r
*/\r
- public static void setTimeContext(Date beginTimeStamp, Date endTimeStamp) {\r
- String beginTime = "";\r
- String endTime = "";\r
- String elapsedTime = "";\r
-\r
- if (beginTimeStamp != null && endTimeStamp != null) {\r
- elapsedTime = String.valueOf(endTimeStamp.getTime() - beginTimeStamp.getTime());\r
- beginTime = generateTimestampStr(beginTimeStamp);\r
- endTime = generateTimestampStr(endTimeStamp);\r
- }\r
-\r
- MDC.put("BeginTimestamp", beginTime);\r
- MDC.put("EndTimestamp", endTime);\r
- MDC.put("ElapsedTime", elapsedTime);\r
+ public static void setTimeContext(@NotNull Date beginTimeStamp, @NotNull Date endTimeStamp) {\r
+ MDC.put("BeginTimestamp", generateTimestampStr(beginTimeStamp));\r
+ MDC.put("EndTimestamp", generateTimestampStr(endTimeStamp));\r
+ MDC.put("ElapsedTime", String.valueOf(endTimeStamp.getTime() - beginTimeStamp.getTime()));\r
}\r
\r
/**\r
* Set response related logging variables in thread local data via MDC.\r
- * \r
- * @param code\r
- * Response code ("0" indicates success)\r
- * @param description\r
- * Response description\r
- * @param className\r
- * class name of invoking class\r
+ *\r
+ * @param code Response code ("0" indicates success)\r
+ * @param description Response description\r
+ * @param className class name of invoking class\r
*/\r
public static void setResponseContext(String code, String description, String className) {\r
MDC.put("ResponseCode", code);\r
\r
/**\r
* Set target related logging variables in thread local data via MDC\r
- * \r
- * @param targetEntity\r
- * Target entity (an external/sub component, for ex. "sdc")\r
- * @param targetServiceName\r
- * Target service name (name of API invoked on target)\r
+ *\r
+ * @param targetEntity Target entity (an external/sub component, for ex. "sdc")\r
+ * @param targetServiceName Target service name (name of API invoked on target)\r
*/\r
public static void setTargetContext(String targetEntity, String targetServiceName) {\r
MDC.put("TargetEntity", targetEntity != null ? targetEntity : "");\r
\r
/**\r
* Set error related logging variables in thread local data via MDC.\r
- * \r
- * @param code\r
- * Error code\r
- * @param description\r
- * Error description\r
+ *\r
+ * @param code Error code\r
+ * @param description Error description\r
*/\r
public static void setErrorContext(String code, String description) {\r
MDC.put("ErrorCode", code);\r
}\r
\r
private static String generateTimestampStr(Date timeStamp) {\r
- DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssX");\r
- TimeZone tz = TimeZone.getTimeZone("UTC");\r
- df.setTimeZone(tz);\r
- return df.format(timeStamp);\r
+ return DATE_FORMAT.format(timeStamp);\r
}\r
\r
/**\r
* Get a previously stored RequestID for the thread local data via MDC. If\r
* one was not previously stored, generate one, store it, and return that\r
* one.\r
- * \r
+ *\r
* @return A string with the request ID\r
*/\r
public static String getRequestId() {\r
- String reqid;\r
+ String requestId;\r
\r
- reqid = (String) MDC.get("RequestID");\r
- if (reqid == null || reqid.isEmpty()) {\r
- reqid = UUID.randomUUID().toString();\r
- MDC.put("RequestId", reqid);\r
+ requestId = (String) MDC.get("RequestID");\r
+ if (requestId == null || requestId.isEmpty()) {\r
+ requestId = UUID.randomUUID().toString();\r
+ MDC.put("RequestId", requestId);\r
}\r
- return reqid;\r
+ return requestId;\r
+ }\r
+\r
+ private static DateFormat createDateFormat() {\r
+ DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssX");\r
+ dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));\r
+ return dateFormat;\r
}\r
\r
}\r