Remove ECOMP in headers
[clamp.git] / src / main / java / org / onap / clamp / clds / util / LoggingUtils.java
index c474006..e4f9ce3 100644 (file)
@@ -2,7 +2,7 @@
  * ============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
+import javax.validation.constraints.NotNull;\r
+import org.apache.log4j.MDC;\r
 \r
-import org.jboss.logging.MDC;\r
+import com.att.eelf.configuration.EELFLogger;\r
+import com.att.eelf.configuration.EELFManager;\r
 \r
-public class LoggingUtils {\r
+/**\r
+ * This class handles the special info that appear in the log, like RequestID,\r
+ * time context, ...\r
+ */\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", "clds-" + UUID.randomUUID().toString());\r
+        MDC.put("RequestId", UUID.randomUUID().toString());\r
         MDC.put("ServiceName", service);\r
         MDC.put("PartnerName", partner);\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
+     * Set time related logging variables in thread local data via MDC.\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
+     * Set response related logging variables in thread local data via MDC.\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
@@ -90,11 +98,9 @@ public class LoggingUtils {
 \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
@@ -102,12 +108,10 @@ public class LoggingUtils {
     }\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
+     * Set error related logging variables in thread local data via MDC.\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
@@ -115,10 +119,31 @@ public class LoggingUtils {
     }\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
+     * @return A string with the request ID\r
+     */\r
+    public static String getRequestId() {\r
+        String requestId;\r
+\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 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