2 * ============LICENSE_START=======================================================
\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
12 * http://www.apache.org/licenses/LICENSE-2.0
\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
21 package org.onap.aai.datarouter.util;
\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
34 public class LoggingUtil {
\r
36 private static String UNKNOWN = "unknown";
\r
39 * Initializes MDC context.
\r
40 * Called when request processing begins.
\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
49 * Clears the MDC context.
\r
50 * Called when request processing ends.
\r
52 public static void closeMdc() {
\r
58 * Generates error and audit logs
\r
60 public static void logRestRequest(Logger logger, Logger auditLogger, HttpServletRequest req, Response response) {
\r
61 logRestRequest(logger, auditLogger, req, response, null);
\r
66 * Generates error and audit logs
\r
68 * @param auditLogger
\r
73 public static void logRestRequest(Logger logger, Logger auditLogger, HttpServletRequest req, Response response, POAAuditException exception) {
\r
75 String respStatusString = UNKNOWN;
\r
76 if(Response.Status.fromStatusCode(response.getStatus()) != null) {
\r
77 respStatusString = Response.Status.fromStatusCode(response.getStatus()).toString();
\r
80 LogFields logFields = new LogFields().setField(LogLine.DefinedFields.RESPONSE_CODE, response.getStatus())
\r
81 .setField(LogLine.DefinedFields.RESPONSE_DESCRIPTION, respStatusString);
\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
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
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