Merge the POMBA code to ONAP AAI data router
[aai/data-router.git] / src / main / java / org / onap / aai / datarouter / util / LoggingUtil.java
diff --git a/src/main/java/org/onap/aai/datarouter/util/LoggingUtil.java b/src/main/java/org/onap/aai/datarouter/util/LoggingUtil.java
new file mode 100644 (file)
index 0000000..2c9a94c
--- /dev/null
@@ -0,0 +1,96 @@
+/**\r
+ * ============LICENSE_START=======================================================\r
+ * org.onap.aai\r
+ * ================================================================================\r
+ * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.\r
+ * Copyright © 2017-2018 Amdocs\r
+ * ================================================================================\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *       http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ * ============LICENSE_END=========================================================\r
+ */\r
+package org.onap.aai.datarouter.util;\r
+\r
+import javax.servlet.http.HttpServletRequest;\r
+import javax.ws.rs.core.Response;\r
+import org.onap.aai.cl.api.LogFields;\r
+import org.onap.aai.cl.api.LogLine;\r
+import org.onap.aai.cl.api.Logger;\r
+import org.onap.aai.cl.mdc.MdcContext;\r
+import org.onap.aai.datarouter.exception.POAAuditException;\r
+import org.onap.aai.datarouter.logging.DataRouterMsgs;\r
+import org.onap.aai.datarouter.util.DataRouterConstants;\r
+import org.slf4j.MDC;\r
+\r
+public class LoggingUtil {\r
+\r
+    private static String UNKNOWN = "unknown";\r
+\r
+    /**\r
+     * Initializes MDC context.\r
+     * Called when request processing begins.\r
+     * @param httpReq\r
+     * @param headers\r
+     */\r
+    public static void initMdc(String transactionId, String fromAppId, String remoteAddr) {\r
+        MdcContext.initialize(transactionId, DataRouterConstants.DATA_ROUTER_SERVICE_NAME, "", fromAppId, remoteAddr);\r
+    }\r
+\r
+    /**\r
+     * Clears the MDC context.\r
+     * Called when request processing ends.\r
+     */\r
+    public static void closeMdc() {\r
+        MDC.clear();\r
+    }\r
+\r
+\r
+    /**\r
+     * Generates error and audit logs\r
+     */\r
+    public static void logRestRequest(Logger logger, Logger auditLogger, HttpServletRequest req, Response response) {\r
+        logRestRequest(logger, auditLogger, req, response, null);\r
+    }\r
+\r
+\r
+    /**\r
+     * Generates error and audit logs\r
+     * @param logger\r
+     * @param auditLogger\r
+     * @param req\r
+     * @param response\r
+     * @param exception\r
+     */\r
+    public static void logRestRequest(Logger logger, Logger auditLogger, HttpServletRequest req, Response response, POAAuditException exception) {\r
+\r
+        String respStatusString = UNKNOWN;\r
+        if(Response.Status.fromStatusCode(response.getStatus()) != null) {\r
+            respStatusString = Response.Status.fromStatusCode(response.getStatus()).toString();\r
+        }\r
+\r
+        LogFields logFields = new LogFields().setField(LogLine.DefinedFields.RESPONSE_CODE, response.getStatus())\r
+                .setField(LogLine.DefinedFields.RESPONSE_DESCRIPTION, respStatusString);\r
+\r
+        if((exception != null) && (exception.getLogCode() != null)) {\r
+            logger.error(exception.getLogCode(), exception.getLogArguments());\r
+            auditLogger.error(exception.getLogCode(), logFields, exception.getLogArguments());\r
+        }\r
+\r
+        String status = Integer.toString(response.getStatus());\r
+        String method = (req != null) ? req.getMethod() : UNKNOWN;\r
+        String reqUrl = (req != null) ? req.getRequestURL().toString() : UNKNOWN;\r
+        String remoteHost = (req != null) ? req.getRemoteHost() : UNKNOWN;\r
+\r
+        logger.info(DataRouterMsgs.PROCESS_REST_REQUEST, method, reqUrl, remoteHost, status);\r
+        auditLogger.info(DataRouterMsgs.PROCESS_REST_REQUEST, logFields, method, reqUrl, remoteHost, status);\r
+    }\r
+}\r