Merge the POMBA code to ONAP AAI data router
[aai/data-router.git] / src / main / java / org / onap / aai / datarouter / util / LoggingUtil.java
1 /**\r
2  * ============LICENSE_START=======================================================\r
3  * org.onap.aai\r
4  * ================================================================================\r
5  * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.\r
6  * Copyright © 2017-2018 Amdocs\r
7  * ================================================================================\r
8  * Licensed under the Apache License, Version 2.0 (the "License");\r
9  * you may not use this file except in compliance with the License.\r
10  * You may obtain a copy of the License at\r
11  *\r
12  *       http://www.apache.org/licenses/LICENSE-2.0\r
13  *\r
14  * Unless required by applicable law or agreed to in writing, software\r
15  * distributed under the License is distributed on an "AS IS" BASIS,\r
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
17  * See the License for the specific language governing permissions and\r
18  * limitations under the License.\r
19  * ============LICENSE_END=========================================================\r
20  */\r
21 package org.onap.aai.datarouter.util;\r
22 \r
23 import javax.servlet.http.HttpServletRequest;\r
24 import javax.ws.rs.core.Response;\r
25 import org.onap.aai.cl.api.LogFields;\r
26 import org.onap.aai.cl.api.LogLine;\r
27 import org.onap.aai.cl.api.Logger;\r
28 import org.onap.aai.cl.mdc.MdcContext;\r
29 import org.onap.aai.datarouter.exception.POAAuditException;\r
30 import org.onap.aai.datarouter.logging.DataRouterMsgs;\r
31 import org.onap.aai.datarouter.util.DataRouterConstants;\r
32 import org.slf4j.MDC;\r
33 \r
34 public class LoggingUtil {\r
35 \r
36     private static String UNKNOWN = "unknown";\r
37 \r
38     /**\r
39      * Initializes MDC context.\r
40      * Called when request processing begins.\r
41      * @param httpReq\r
42      * @param headers\r
43      */\r
44     public static void initMdc(String transactionId, String fromAppId, String remoteAddr) {\r
45         MdcContext.initialize(transactionId, DataRouterConstants.DATA_ROUTER_SERVICE_NAME, "", fromAppId, remoteAddr);\r
46     }\r
47 \r
48     /**\r
49      * Clears the MDC context.\r
50      * Called when request processing ends.\r
51      */\r
52     public static void closeMdc() {\r
53         MDC.clear();\r
54     }\r
55 \r
56 \r
57     /**\r
58      * Generates error and audit logs\r
59      */\r
60     public static void logRestRequest(Logger logger, Logger auditLogger, HttpServletRequest req, Response response) {\r
61         logRestRequest(logger, auditLogger, req, response, null);\r
62     }\r
63 \r
64 \r
65     /**\r
66      * Generates error and audit logs\r
67      * @param logger\r
68      * @param auditLogger\r
69      * @param req\r
70      * @param response\r
71      * @param exception\r
72      */\r
73     public static void logRestRequest(Logger logger, Logger auditLogger, HttpServletRequest req, Response response, POAAuditException exception) {\r
74 \r
75         String respStatusString = UNKNOWN;\r
76         if(Response.Status.fromStatusCode(response.getStatus()) != null) {\r
77             respStatusString = Response.Status.fromStatusCode(response.getStatus()).toString();\r
78         }\r
79 \r
80         LogFields logFields = new LogFields().setField(LogLine.DefinedFields.RESPONSE_CODE, response.getStatus())\r
81                 .setField(LogLine.DefinedFields.RESPONSE_DESCRIPTION, respStatusString);\r
82 \r
83         if((exception != null) && (exception.getLogCode() != null)) {\r
84             logger.error(exception.getLogCode(), exception.getLogArguments());\r
85             auditLogger.error(exception.getLogCode(), logFields, exception.getLogArguments());\r
86         }\r
87 \r
88         String status = Integer.toString(response.getStatus());\r
89         String method = (req != null) ? req.getMethod() : UNKNOWN;\r
90         String reqUrl = (req != null) ? req.getRequestURL().toString() : UNKNOWN;\r
91         String remoteHost = (req != null) ? req.getRemoteHost() : UNKNOWN;\r
92 \r
93         logger.info(DataRouterMsgs.PROCESS_REST_REQUEST, method, reqUrl, remoteHost, status);\r
94         auditLogger.info(DataRouterMsgs.PROCESS_REST_REQUEST, logFields, method, reqUrl, remoteHost, status);\r
95     }\r
96 }\r