--- /dev/null
+/**\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