diff options
author | Benjamin, Max (mb388a) <mb388a@us.att.com> | 2018-07-30 15:56:09 -0400 |
---|---|---|
committer | Benjamin, Max (mb388a) <mb388a@us.att.com> | 2018-07-31 11:09:25 -0400 |
commit | 5a6a6de6f1a26a1897e4917a0df613e25a24eb70 (patch) | |
tree | 59a968f27b4b603aacc9d5e7b51fb598aeec5321 /common/src/main/java/org/openecomp/mso/logger/MsoLogger.java | |
parent | b6dc38501f3b746426b42d9de4cc883d894149e8 (diff) |
Containerization feature of SO
Change-Id: I95381232eeefcd247a66a5cec370a8ce1c288e18
Issue-ID: SO-670
Signed-off-by: Benjamin, Max (mb388a) <mb388a@us.att.com>
Diffstat (limited to 'common/src/main/java/org/openecomp/mso/logger/MsoLogger.java')
-rw-r--r-- | common/src/main/java/org/openecomp/mso/logger/MsoLogger.java | 1164 |
1 files changed, 0 insertions, 1164 deletions
diff --git a/common/src/main/java/org/openecomp/mso/logger/MsoLogger.java b/common/src/main/java/org/openecomp/mso/logger/MsoLogger.java deleted file mode 100644 index 9f918805c0..0000000000 --- a/common/src/main/java/org/openecomp/mso/logger/MsoLogger.java +++ /dev/null @@ -1,1164 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP - SO - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * Copyright (C) 2017 Huawei Technologies Co., Ltd. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.mso.logger; - -import java.io.BufferedReader; -import java.io.BufferedWriter; -import java.io.File; -import java.io.FileReader; -import java.io.FileWriter; -import java.io.IOException; -import java.io.PrintWriter; -import java.io.StringWriter; -import java.net.InetAddress; -import java.net.UnknownHostException; -import java.util.UUID; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.slf4j.MDC; - -import org.openecomp.mso.entity.MsoRequest; -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; -import com.att.eelf.i18n.EELFResolvableErrorEnum; - -import java.text.DateFormat; -import java.text.SimpleDateFormat; -import java.util.Date; - -/** - * Simple wrapper around the EELF Logger class for MSO usage. This class - * supports all of the normal logging functions (debug, info, etc.), prepending - * a string of format "[<requestId>|<serviceId]" to each message. - * - * MSO code should initialize with these IDs when available, so that individual - * requests and/or services can be tracked throughout the various MSO component - * logs (API Handler, BPEL, and Adapters). - * - * - */ -public class MsoLogger { - // MDC parameters - public static final String REQUEST_ID = "RequestId"; - public static final String SERVICE_INSTANCE_ID = "ServiceInstanceId"; - public static final String SERVICE_NAME = "ServiceName"; - private static final String SERVICE_NAME_IS_METHOD_NAME = "ServiceNameIsMethodName"; - private static final String INSTANCE_UUID = "InstanceUUID"; - private static final String SERVER_IP = "ServerIPAddress"; - private static final String FQDN = "ServerFQDN"; - public static final String REMOTE_HOST = "RemoteHost"; - public static final String ALERT_SEVERITY = "AlertSeverity"; - public static final String TIMER = "Timer"; - private static final String USER = "User"; - private static final String DUMMY_VALUE = "trace-#"; - public static final String UNKNOWN = "UNKNOWN"; - //For getting an identity of calling application - public static final String HEADER_FROM_APP_ID = "X-FromAppId"; - public static final String FROM_APP_ID = "FromAppId"; - // Audit/Metric log specific - private static final String BEGINTIME = "BeginTimestamp"; - private static final String ENDTIME = "EndTimestamp"; - public static final String PARTNERNAME = "PartnerName"; - private static final String STATUSCODE = "StatusCode"; - private static final String RESPONSECODE = "ResponseCode"; - private static final String RESPONSEDESC = "ResponseDesc"; - // Metric log specific - private static final String TARGETENTITY = "TargetEntity"; - private static final String TARGETSERVICENAME = "TargetServiceName"; - private static final String TARGETVIRTUALENTITY = "TargetVirtualEntity"; - - private static final String FATAL_LEVEL = "FATAL"; - private static final String ERROR_LEVEL = "ERROR"; - private static final String WARN_LEVEL = "WARN"; - private static final String INFO_LEVEL = "INFO"; - private static final String DEBUG_LEVEL = "DEBUG"; - - private static final String ERRORCODE = "ErrorCode"; - private static final String ERRORDESC = "ErrorDesc"; - - public enum Catalog { - APIH, BPEL, RA, ASDC, GENERAL - } - - public enum StatusCode { - COMPLETE, ERROR - } - - public enum ResponseCode { - Suc(0), PermissionError(100), DataError(300), DataNotFound(301), BadRequest(302), SchemaError( - 400), BusinessProcesssError(500), ServiceNotAvailable(501), InternalError( - 502), Conflict(503), DBAccessError(504), CommunicationError(505), UnknownError(900); - - private int value; - - public int getValue() { - return this.value; - } - - ResponseCode(int value) { - this.value = value; - } - } - - public enum ErrorCode { - PermissionError(100), AvailabilityError(200), DataError(300), SchemaError(400), BusinessProcesssError( - 500), UnknownError(900); - - private int value; - - public int getValue() { - return this.value; - } - - ErrorCode(int value) { - this.value = value; - } - } - - private EELFLogger logger, auditLogger, metricsLogger; - private static final String CONFIG_FILE = System.getProperty("jboss.home.dir") + "/mso-config/uuid/uuid_" - + System.getProperty("jboss.server.name"); - private static String instanceUUID, serverIP, serverName; - private MessageEnum exceptionArg, defaultException, defaultWarning, defaultAudit, defaultMetrics; - - // For internal logging of the initialization of MSO logs - private static final Logger LOGGER = Logger.getLogger(MsoLogger.class.getName()); - - - // Since four adaptors are using the instance of MsoLogger which will be referenced everywhere - // hence limiting the number of MsoLogger instances to five. - private static final MsoLogger generalMsoLogger = new MsoLogger(Catalog.GENERAL); - private static final MsoLogger apihLogger = new MsoLogger(Catalog.APIH); - private static final MsoLogger asdcLogger = new MsoLogger(Catalog.ASDC); - private static final MsoLogger raLogger = new MsoLogger(Catalog.RA); - private static final MsoLogger bpelLogger = new MsoLogger(Catalog.BPEL); - - static { - if (instanceUUID == null || ("").equals(instanceUUID)) { - instanceUUID = getInstanceUUID(); - } - - if (serverIP == null || serverName == null || ("").equals(serverIP) || ("").equals(serverName)) { - try { - InetAddress server = InetAddress.getLocalHost(); - serverIP = server.getHostAddress(); - serverName = server.getHostName(); - } catch (UnknownHostException e) { - LOGGER.log(Level.SEVERE, "Could not get local hostname", e); - serverIP = ""; - serverName = ""; - } - } - } - - // Singleton instances of the EELFLogger of all types are referenced by MsoLogger - private MsoLogger(Catalog cat) { - this.logger = EELFManager.getInstance().getErrorLogger(); - this.auditLogger = EELFManager.getInstance().getAuditLogger(); - this.metricsLogger = EELFManager.getInstance().getMetricsLogger(); - this.setDefaultLogCatalog(cat); - } - - - - /** - * Get the MsoLogger based on the catalog - * This method is fixed now to resolve the total number of objects that are getting created - * everytime this function gets called. Its supposed to have fixed number of instance per java process. - * - * @param cat - * Catalog of the logger - * @return the MsoLogger - */ - public static synchronized MsoLogger getMsoLogger(MsoLogger.Catalog cat) { - switch (cat) { - case GENERAL: - return generalMsoLogger; - case APIH: - return apihLogger; - case RA: - return raLogger; - case BPEL: - return bpelLogger; - case ASDC: - return asdcLogger; - default: - return generalMsoLogger; - } - } - - /** - * Record the Metrics event with no argument - * - * @param startTime - * Transaction starting time in millieseconds - * @param statusCode - * StatusCode of the transaction, either COMPLETE or ERROR - * @param responseCode - * The response code returned by the sub-components - * @param responseDesc - * Human redable description of the response code - * @param targetEntity - * The component which is invoked for this sub-operation - * @param targetServiceName - * API invoked on the TargetEntity - * @param targetVEntity - * Target VNF or VM acted opon by the component, if available - */ - public void recordMetricEvent(Long startTime, StatusCode statusCode, ResponseCode responseCode, String responseDesc, - String targetEntity, String targetServiceName, String targetVEntity) { - prepareMetricMsg(startTime, statusCode, responseCode.getValue(), responseDesc, targetEntity, targetServiceName, - targetVEntity); - metricsLogger.info(""); - MDC.remove(TIMER); - MDC.remove(TARGETENTITY); - MDC.remove(TARGETSERVICENAME); - } - - /** - * Record the Audit event - * - * @param startTime - * Transaction starting time in millieseconds - * @param statusCode - * StatusCode of the transaction, either COMPLETE or ERROR - * @param responseCode - * The application specific response code - * @param responseDesc - * Human redable description of the application response code - */ - public void recordAuditEvent(Long startTime, StatusCode statusCode, ResponseCode responseCode, - String responseDesc) { - prepareAuditMsg(startTime, statusCode, responseCode.getValue(), responseDesc); - auditLogger.info(""); - MDC.remove(TIMER); - } - - // Debug methods - /** - * Record the Debug event - * - * @param msg - * The log message to put - */ - public void debug(String msg) { - prepareMsg(DEBUG_LEVEL); - logger.debug(msg); - } - - /** - * Record the Debug event - * - * @param msg - * The log message to put - * @param t - * The exception to put - */ - public void debug(String msg, Throwable t) { - prepareMsg(DEBUG_LEVEL); - logger.debug(msg, t); - } - - /** - * Log error message with the details of the exception that caused the error. - * @param msg - * @param throwable - */ - public void error(String msg, Throwable throwable) { - prepareMsg(ERROR_LEVEL); - logger.error(msg, throwable); - } - - // Info methods - /** - * Record the Info event - * - * @param msg - * The log message to put - */ - public void info(EELFResolvableErrorEnum msg, String targetEntity, String targetServiceName) { - prepareErrorMsg(INFO_LEVEL, targetEntity, targetServiceName, null, ""); - - logger.info(msg); - MDC.remove(TARGETENTITY); - MDC.remove(TARGETSERVICENAME); - } - - /** - * Record the Info event with 1 argument - * - * @param msg - * The log message to put - * @param arg0 - * The argument used in the log message - */ - public void info(EELFResolvableErrorEnum msg, String arg0, String targetEntity, String targetServiceName) { - prepareErrorMsg(INFO_LEVEL, targetEntity, targetServiceName, null, ""); - - logger.info(msg, normalize(arg0)); - MDC.remove(TARGETENTITY); - MDC.remove(TARGETSERVICENAME); - } - - /** - * Record the Info event with 2 arguments - * - * @param msg - * The log message to put - * @param arg0,arg1 - * The arguments used in the log message - */ - public void info(EELFResolvableErrorEnum msg, String arg0, String arg1, String targetEntity, - String targetServiceName) { - prepareErrorMsg(INFO_LEVEL, targetEntity, targetServiceName, null, ""); - - logger.info(msg, normalize(arg0), normalize(arg1)); - MDC.remove(TARGETENTITY); - MDC.remove(TARGETSERVICENAME); - } - - /** - * Record the Info event with 3 arguments - * - * @param msg - * The log message to put - * @param arg0,arg1,arg2 - * The arguments used in the log message - */ - public void info(EELFResolvableErrorEnum msg, String arg0, String arg1, String arg2, String targetEntity, - String targetServiceName) { - prepareErrorMsg(INFO_LEVEL, targetEntity, targetServiceName, null, ""); - - logger.info(msg, normalize(arg0), normalize(arg1), normalize(arg2)); - MDC.remove(TARGETENTITY); - MDC.remove(TARGETSERVICENAME); - } - - /** - * Record the Info event with 4 arguments - * - * @param msg - * The log message to put - * @param arg0,arg1,arg2,arg3 - * The arguments used in the log message - */ - public void info(EELFResolvableErrorEnum msg, String arg0, String arg1, String arg2, String arg3, - String targetEntity, String targetServiceName) { - prepareErrorMsg(INFO_LEVEL, targetEntity, targetServiceName, null, ""); - - logger.info(msg, normalize(arg0), normalize(arg1), normalize(arg2), normalize(arg3)); - MDC.remove(TARGETENTITY); - MDC.remove(TARGETSERVICENAME); - } - - /** - * Record the Info event with 5 arguments - * - * @param msg - * The log message to put - * @param arg0,arg1,arg2,arg3,arg4 - * The arguments used in the log message - */ - public void info(EELFResolvableErrorEnum msg, String arg0, String arg1, String arg2, String arg3, String arg4, - String targetEntity, String targetServiceName) { - prepareErrorMsg(INFO_LEVEL, targetEntity, targetServiceName, null, ""); - - logger.info(msg, normalize(arg0), normalize(arg1), normalize(arg2), normalize(arg3), normalize(arg4)); - MDC.remove(TARGETENTITY); - MDC.remove(TARGETSERVICENAME); - } - - /** - * Record the Info event with 6 arguments - * - * @param msg - * The log message to put - * @param arg0,arg1,arg2,arg3,arg4,arg5 - * The arguments used in the log message - */ - public void info(EELFResolvableErrorEnum msg, String arg0, String arg1, String arg2, String arg3, String arg4, - String arg5, String targetEntity, String targetServiceName) { - prepareErrorMsg(INFO_LEVEL, targetEntity, targetServiceName, null, ""); - - logger.info(msg, normalize(arg0), normalize(arg1), normalize(arg2), normalize(arg3), normalize(arg4), - normalize(arg5)); - MDC.remove(TARGETENTITY); - MDC.remove(TARGETSERVICENAME); - } - - // Warning methods - /** - * Record the Warning event - * - * @param msg - * The log message to put - */ - public void warn(EELFResolvableErrorEnum msg, String targetEntity, String targetServiceName, ErrorCode errorCode, - String errorDesc) { - prepareErrorMsg(WARN_LEVEL, targetEntity, targetServiceName, errorCode, errorDesc); - - logger.warn(msg); - MDC.remove(TARGETENTITY); - MDC.remove(TARGETSERVICENAME); - } - - /** - * Record the Warning event - * - * @param msg - * The log message to put - * @param t - * The exception info - */ - public void warn(EELFResolvableErrorEnum msg, String targetEntity, String targetServiceName, ErrorCode errorCode, - String errorDesc, Throwable t) { - prepareErrorMsg(WARN_LEVEL, targetEntity, targetServiceName, errorCode, errorDesc); - logger.warn(msg); - logger.warn("Exception raised: " + getNormalizedStackTrace(t)); - logger.debug("Exception raised", t); - MDC.remove(TARGETENTITY); - MDC.remove(TARGETSERVICENAME); - } - - /** - * Record the Warn event with 1 argument - * - * @param msg - * The log message to put - * @param arg - * The argument used in the log message - */ - public void warn(EELFResolvableErrorEnum msg, String arg, String targetEntity, String targetServiceName, - ErrorCode errorCode, String errorDesc) { - prepareErrorMsg(WARN_LEVEL, targetEntity, targetServiceName, errorCode, errorDesc); - logger.warn(msg, arg); - MDC.remove(TARGETENTITY); - MDC.remove(TARGETSERVICENAME); - } - - /** - * Record the Warn event with 1 argument - * - * @param msg - * The log message to put - * @param arg - * The arguments used in the log message - * @param t - * The exception info - */ - public void warn(EELFResolvableErrorEnum msg, String arg, String targetEntity, String targetServiceName, - ErrorCode errorCode, String errorDesc, Throwable t) { - prepareErrorMsg(WARN_LEVEL, targetEntity, targetServiceName, errorCode, errorDesc); - logger.warn(msg, arg); - logger.warn("Exception raised: " + getNormalizedStackTrace(t)); - logger.debug("Exception raised", t); - MDC.remove(TARGETENTITY); - MDC.remove(TARGETSERVICENAME); - } - - /** - * Record the Warn event with 2 arguments - * - * @param msg - * The log message to put - * @param arg0,arg1 - * The arguments used in the log message - */ - public void warn(EELFResolvableErrorEnum msg, String arg0, String arg1, String targetEntity, - String targetServiceName, ErrorCode errorCode, String errorDesc) { - prepareErrorMsg(WARN_LEVEL, targetEntity, targetServiceName, errorCode, errorDesc); - logger.warn(msg, normalize(arg0), normalize(arg1)); - MDC.remove(TARGETENTITY); - MDC.remove(TARGETSERVICENAME); - } - - /** - * Record the Warn event with 2 arguments - * - * @param msg - * The log message to put - * @param arg0,arg1 - * The arguments used in the log message - * @param t - * The exception info - */ - public void warn(EELFResolvableErrorEnum msg, String arg0, String arg1, String targetEntity, - String targetServiceName, ErrorCode errorCode, String errorDesc, Throwable t) { - prepareErrorMsg(WARN_LEVEL, targetEntity, targetServiceName, errorCode, errorDesc); - logger.warn(msg, normalize(arg0), normalize(arg1)); - logger.warn("Exception raised: " + getNormalizedStackTrace(t)); - logger.debug("Exception raised", t); - MDC.remove(TARGETENTITY); - MDC.remove(TARGETSERVICENAME); - } - - /** - * Record the Warn event with 3 arguments - * - * @param msg - * The log message to put - * @param arg0,arg1,arg2 - * The arguments used in the log message - */ - public void warn(EELFResolvableErrorEnum msg, String arg0, String arg1, String arg2, String targetEntity, - String targetServiceName, ErrorCode errorCode, String errorDesc) { - prepareErrorMsg(WARN_LEVEL, targetEntity, targetServiceName, errorCode, errorDesc); - logger.warn(msg, normalize(arg0), normalize(arg1), normalize(arg2)); - MDC.remove(TARGETENTITY); - MDC.remove(TARGETSERVICENAME); - } - - /** - * Record the Warn event with 3 arguments - * - * @param msg - * The log message to put - * @param arg0,arg1,arg2 - * The arguments used in the log message - * @param t - * The exception info - */ - public void warn(EELFResolvableErrorEnum msg, String arg0, String arg1, String arg2, String targetEntity, - String targetServiceName, ErrorCode errorCode, String errorDesc, Throwable t) { - prepareErrorMsg(WARN_LEVEL, targetEntity, targetServiceName, errorCode, errorDesc); - logger.warn(msg, normalize(arg0), normalize(arg1), normalize(arg2)); - logger.warn("Exception raised: " + getNormalizedStackTrace(t)); - logger.debug("Exception raised", t); - MDC.remove(TARGETENTITY); - MDC.remove(TARGETSERVICENAME); - } - - /** - * Record the Warn event with 4 arguments - * - * @param msg - * The log message to put - * @param arg0,arg1,arg2,arg3 - * The arguments used in the log message - */ - public void warn(EELFResolvableErrorEnum msg, String arg0, String arg1, String arg2, String arg3, - String targetEntity, String targetServiceName, ErrorCode errorCode, String errorDesc) { - prepareErrorMsg(WARN_LEVEL, targetEntity, targetServiceName, errorCode, errorDesc); - logger.warn(msg, normalize(arg0), normalize(arg1), normalize(arg2), normalize(arg3)); - MDC.remove(TARGETENTITY); - MDC.remove(TARGETSERVICENAME); - } - - /** - * Record the Warn event with 4 arguments - * - * @param msg - * The log message to put - * @param arg0,arg1,arg2, - * arg3 The arguments used in the log message - * @param t - * The exception info - */ - public void warn(EELFResolvableErrorEnum msg, String arg0, String arg1, String arg2, String arg3, - String targetEntity, String targetServiceName, ErrorCode errorCode, String errorDesc, Throwable t) { - prepareErrorMsg(WARN_LEVEL, targetEntity, targetServiceName, errorCode, errorDesc); - logger.warn(msg, normalize(arg0), normalize(arg1), normalize(arg2), normalize(arg3)); - logger.warn("Exception raised: " + getNormalizedStackTrace(t)); - logger.debug("Exception raised", t); - MDC.remove(TARGETENTITY); - MDC.remove(TARGETSERVICENAME); - } - - /** - * Record the Warn event with 5 arguments - * - * @param msg - * The log message to put - * @param arg0,arg1,arg2,arg3,arg4 - * The arguments used in the log message - */ - public void warn(EELFResolvableErrorEnum msg, String arg0, String arg1, String arg2, String arg3, String arg4, - String targetEntity, String targetServiceName, ErrorCode errorCode, String errorDesc) { - prepareErrorMsg(WARN_LEVEL, targetEntity, targetServiceName, errorCode, errorDesc); - logger.warn(msg, normalize(arg0), normalize(arg1), normalize(arg2), normalize(arg3), normalize(arg4)); - MDC.remove(TARGETENTITY); - MDC.remove(TARGETSERVICENAME); - } - - /** - * Record the Warn event with 5 arguments - * - * @param msg - * The log message to put - * @param arg0,arg1,arg2,arg3,arg4 - * The arguments used in the log message - * @param t - * The exception info - */ - public void warn(EELFResolvableErrorEnum msg, String arg0, String arg1, String arg2, String arg3, String arg4, - String targetEntity, String targetServiceName, ErrorCode errorCode, String errorDesc, Throwable t) { - prepareErrorMsg(WARN_LEVEL, targetEntity, targetServiceName, errorCode, errorDesc); - logger.warn(msg, normalize(arg0), normalize(arg1), normalize(arg2), normalize(arg3), normalize(arg4)); - logger.warn("Exception raised: " + getNormalizedStackTrace(t)); - logger.debug("Exception raised", t); - MDC.remove(TARGETENTITY); - MDC.remove(TARGETSERVICENAME); - } - - // Error methods - /** - * Record the Error event - * - * @param msg - * The log message to put - */ - public void error(EELFResolvableErrorEnum msg, String targetEntity, String targetServiceName, ErrorCode errorCode, - String errorDesc) { - prepareErrorMsg(ERROR_LEVEL, targetEntity, targetServiceName, errorCode, errorDesc); - logger.error(msg); - MDC.remove(TARGETENTITY); - MDC.remove(TARGETSERVICENAME); - } - - /** - * Record the Error event - * - * @param msg - * The log message to put - * @param t - * The exception info - */ - public void error(EELFResolvableErrorEnum msg, String targetEntity, String targetServiceName, ErrorCode errorCode, - String errorDesc, Throwable t) { - prepareErrorMsg(ERROR_LEVEL, targetEntity, targetServiceName, errorCode, errorDesc); - logger.error(msg); - logger.error(exceptionArg, getNormalizedStackTrace(t)); - logger.debug("Exception raised", t); - MDC.remove(TARGETENTITY); - MDC.remove(TARGETSERVICENAME); - } - - /** - * Record the Error event with 1 argument - * - * @param msg - * The log message to put - * @param arg0 - * The arguments used in the log message - */ - public void error(EELFResolvableErrorEnum msg, String arg0, String targetEntity, String targetServiceName, - ErrorCode errorCode, String errorDesc) { - prepareErrorMsg(ERROR_LEVEL, targetEntity, targetServiceName, errorCode, errorDesc); - logger.error(msg, normalize(arg0)); - MDC.remove(TARGETENTITY); - MDC.remove(TARGETSERVICENAME); - } - - /** - * Record the Error event with 1 argument - * - * @param msg - * The log message to put - * @param arg0 - * The arguments used in the log message - * @param t - * The exception info - */ - public void error(EELFResolvableErrorEnum msg, String arg0, String targetEntity, String targetServiceName, - ErrorCode errorCode, String errorDesc, Throwable t) { - prepareErrorMsg(ERROR_LEVEL, targetEntity, targetServiceName, errorCode, errorDesc); - logger.error(msg, normalize(arg0)); - logger.error(exceptionArg, getNormalizedStackTrace(t)); - logger.debug("Exception raised", t); - MDC.remove(TARGETENTITY); - MDC.remove(TARGETSERVICENAME); - } - - /** - * Record the Error event with 2 arguments - * - * @param msg - * The log message to put - * @param arg0,arg1 - * The arguments used in the log message - */ - public void error(EELFResolvableErrorEnum msg, String arg0, String arg1, String targetEntity, - String targetServiceName, ErrorCode errorCode, String errorDesc) { - prepareErrorMsg(ERROR_LEVEL, targetEntity, targetServiceName, errorCode, errorDesc); - logger.error(msg, normalize(arg0), normalize(arg1)); - MDC.remove(TARGETENTITY); - MDC.remove(TARGETSERVICENAME); - } - - /** - * Record the Error event with 2 arguments - * - * @param msg - * The log message to put - * @param arg0,arg1 - * The arguments used in the log message - * @param t - * The exception info - */ - public void error(EELFResolvableErrorEnum msg, String arg0, String arg1, String targetEntity, - String targetServiceName, ErrorCode errorCode, String errorDesc, Throwable t) { - prepareErrorMsg(ERROR_LEVEL, targetEntity, targetServiceName, errorCode, errorDesc); - logger.error(msg, normalize(arg0), normalize(arg1)); - logger.error(exceptionArg, getNormalizedStackTrace(t)); - logger.debug("Exception raised", t); - MDC.remove(TARGETENTITY); - MDC.remove(TARGETSERVICENAME); - } - - /** - * Record the Error event with 3 arguments - * - * @param msg - * The log message to put - * @param arg0,arg1,arg2 - * The arguments used in the log message - */ - public void error(EELFResolvableErrorEnum msg, String arg0, String arg1, String arg2, String targetEntity, - String targetServiceName, ErrorCode errorCode, String errorDesc) { - prepareErrorMsg(ERROR_LEVEL, targetEntity, targetServiceName, errorCode, errorDesc); - logger.error(msg, normalize(arg0), normalize(arg1), normalize(arg2)); - MDC.remove(TARGETENTITY); - MDC.remove(TARGETSERVICENAME); - } - - /** - * Record the Error event with 3 arguments - * - * @param msg - * The log message to put - * @param arg0,arg1,arg2 - * The arguments used in the log message - * @param t - * The exception info - */ - public void error(EELFResolvableErrorEnum msg, String arg0, String arg1, String arg2, String targetEntity, - String targetServiceName, ErrorCode errorCode, String errorDesc, Throwable t) { - prepareErrorMsg(ERROR_LEVEL, targetEntity, targetServiceName, errorCode, errorDesc); - logger.error(msg, normalize(arg0), normalize(arg1), normalize(arg2)); - logger.error(exceptionArg, getNormalizedStackTrace(t)); - logger.debug("Exception raised", t); - MDC.remove(TARGETENTITY); - MDC.remove(TARGETSERVICENAME); - } - - /** - * Record the Error event with 4 arguments - * - * @param msg - * The log message to put - * @param arg0,arg1,arg2,arg3 - * The arguments used in the log message - */ - public void error(EELFResolvableErrorEnum msg, String arg0, String arg1, String arg2, String arg3, - String targetEntity, String targetServiceName, ErrorCode errorCode, String errorDesc) { - prepareErrorMsg(ERROR_LEVEL, targetEntity, targetServiceName, errorCode, errorDesc); - logger.error(msg, normalize(arg0), normalize(arg1), normalize(arg2), normalize(arg3)); - MDC.remove(TARGETENTITY); - MDC.remove(TARGETSERVICENAME); - } - - /** - * Record the Error event with 4 arguments - * - * @param msg - * The log message to put - * @param arg0,arg1,arg2,arg3 - * The arguments used in the log message - * @param t - * The exception info - */ - public void error(EELFResolvableErrorEnum msg, String arg0, String arg1, String arg2, String arg3, - String targetEntity, String targetServiceName, ErrorCode errorCode, String errorDesc, Throwable t) { - prepareErrorMsg(ERROR_LEVEL, targetEntity, targetServiceName, errorCode, errorDesc); - logger.error(msg, normalize(arg0), normalize(arg1), normalize(arg2), normalize(arg3)); - logger.error(exceptionArg, getNormalizedStackTrace(t)); - logger.debug("Exception raised", t); - MDC.remove(TARGETENTITY); - MDC.remove(TARGETSERVICENAME); - } - - /** - * Record the Error event with 5 arguments - * - * @param msg - * The log message to put - * @param arg0,arg1,arg2,arg3,arg4 - * The arguments used in the log message - */ - public void error(EELFResolvableErrorEnum msg, String arg0, String arg1, String arg2, String arg3, String arg4, - String targetEntity, String targetServiceName, ErrorCode errorCode, String errorDesc) { - prepareErrorMsg(ERROR_LEVEL, targetEntity, targetServiceName, errorCode, errorDesc); - logger.error(msg, normalize(arg0), normalize(arg1), normalize(arg2), normalize(arg3), normalize(arg4)); - MDC.remove(TARGETENTITY); - MDC.remove(TARGETSERVICENAME); - } - - /** - * Record the Error event with 5 arguments - * - * @param msg - * The log message to put - * @param arg0,arg1,arg2,arg3,arg4 - * The arguments used in the log message - * @param t - * The exception info - */ - public void error(EELFResolvableErrorEnum msg, String arg0, String arg1, String arg2, String arg3, String arg4, - String targetEntity, String targetServiceName, ErrorCode errorCode, String errorDesc, Throwable t) { - prepareErrorMsg(ERROR_LEVEL, targetEntity, targetServiceName, errorCode, errorDesc); - logger.error(msg, normalize(arg0), normalize(arg1), normalize(arg2), normalize(arg3), normalize(arg4)); - logger.error(exceptionArg, getNormalizedStackTrace(t)); - logger.debug("Exception raised", t); - MDC.remove(TARGETENTITY); - MDC.remove(TARGETSERVICENAME); - } - - public boolean isDebugEnabled() { - return logger.isDebugEnabled(); - } - - private void prepareMsg(String loggingLevel) { - prepareMsg(loggingLevel, null, null); - } - - private void prepareMsg(String loggingLevel, String serviceNamep, String timer) { - String reqId = MDC.get(REQUEST_ID); - String svcId = MDC.get(SERVICE_INSTANCE_ID); - - // Based on the discussion with Adrian, - // if these 2 parameters is not available, using dummy value "trace-#" - if (reqId == null || reqId.isEmpty()) { - MDC.put(REQUEST_ID, DUMMY_VALUE); - } - - if (svcId == null || svcId.isEmpty()) { - MDC.put(SERVICE_INSTANCE_ID, DUMMY_VALUE); - } - - if (timer != null) { - MDC.put(TIMER, timer); - } else { - MDC.remove(TIMER); - } - - MDC.put(SERVICE_NAME, getFinalServiceName(serviceNamep)); - MDC.put(ALERT_SEVERITY, getSeverityLevel(loggingLevel)); - MDC.put(INSTANCE_UUID, instanceUUID); - MDC.put(SERVER_IP, serverIP); - MDC.put(FQDN, serverName); - } - - private void prepareAuditMsg(long startTime, StatusCode statusCode, int responseCode, String responseDesc) { - long endTime = System.currentTimeMillis(); - prepareMsg(INFO_LEVEL, null, String.valueOf(endTime - startTime)); - prepareAuditMetricMsg(startTime, endTime, statusCode, responseCode, responseDesc); - } - - private void prepareAuditMetricMsg(long startTime, long endTime, StatusCode statusCode, int responseCode, - String responseDesc) { - Date startDate = new Date(startTime); - Date endDate = new Date(endTime); - DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX"); - - MDC.put(BEGINTIME, String.valueOf(formatter.format(startDate))); - MDC.put(ENDTIME, String.valueOf(formatter.format(endDate))); - MDC.put(STATUSCODE, statusCode.name()); - MDC.put(RESPONSECODE, String.valueOf(responseCode)); - MDC.put(RESPONSEDESC, responseDesc); - } - - private void prepareErrorMsg(String loggingLevel, String targetEntity, String targetServiceName, - ErrorCode errorCode, String errorDesc) { - MDC.put(ALERT_SEVERITY, getSeverityLevel(loggingLevel)); - MDC.put(ERRORCODE, String.valueOf(errorCode)); - MDC.put(ERRORDESC, errorDesc); - MDC.put(TARGETENTITY, targetEntity); - MDC.put(TARGETSERVICENAME, targetServiceName); - MDC.put(SERVICE_NAME, getFinalServiceName(getServiceName())); - } - - private void prepareMetricMsg(long startTime, StatusCode statusCode, int responseCode, String responseDesc, - String targetEntity, String targetServiceName, String targetVEntity) { - long endTime = System.currentTimeMillis(); - prepareMsg(INFO_LEVEL, null, String.valueOf(endTime - startTime)); - prepareAuditMetricMsg(startTime, endTime, statusCode, responseCode, responseDesc); - - // Populate Metric log specific parameter - MDC.put(TARGETENTITY, targetEntity); - MDC.put(TARGETSERVICENAME, targetServiceName); - - if (null != targetVEntity) { - MDC.put(TARGETVIRTUALENTITY, targetVEntity); - } - } - - private String getSeverityLevel(String loggingLevel) { - String severity; - // According to the Nagios alerting: 0=OK; 1=WARNING; 2=UNKOWN; - // 3=CRITICAL - switch (loggingLevel) { - case ERROR_LEVEL: - severity = "2"; - break; - case FATAL_LEVEL: - severity = "3"; - break; - case WARN_LEVEL: - severity = "1"; - break; - default: - severity = "0"; - break; - } - return severity; - } - - private String getFinalServiceName(String serviceNamep) { - // This step to set the serviceName should be put after the className is - // get, - // since the default serviceName is obtained during the method to get - // the className. - // - // There's 3 ways to set the serviceName. The first method has the most - // priority to set the value. - // a) If the serviceName is set within the log method, this value will - // be used first - // b) If serviceName is not set within the log method, the value defined - // in the MDC will be used - // c) If nothing is set specifically, then MsoLogger will assign a - // default(MSO.<method_name>) value to it - String serName = MDC.get(MsoLogger.SERVICE_NAME); - - // Check if service name was already set as the method name by a - // previous call to this method. - String isMethodNameStr = MDC.get(MsoLogger.SERVICE_NAME_IS_METHOD_NAME); - boolean isMethodName = isMethodNameStr != null && isMethodNameStr.equals(Boolean.TRUE.toString()); - if (serviceNamep != null) { - return serviceNamep; - } else if (serName != null && !isMethodName) { - return serName; - } - - MDC.put(MsoLogger.SERVICE_NAME_IS_METHOD_NAME, Boolean.TRUE.toString()); - int limit; - StackTraceElement[] classArr = new Exception().getStackTrace(); - if (classArr.length >= 6) { - limit = 7; - } else { - limit = classArr.length; - } - for (int i = 1; i < limit; i++) { - String className = classArr[i].getClassName(); - if (!className.equals(this.getClass().getName())) { - return classArr[i].getMethodName(); - } - } - return classArr[0].getMethodName(); - } - - // Based on the discussion with Adrian, instanceUUID is used to identifiy - // the mso instance, - // it is generated during mso instance initialization period - // The same mso instnace will use the same instanceUUID value, even after - // restart - private static String getInstanceUUID() { - // Avoid creation during build and tests - if (System.getProperty("jboss.server.name") == null) { - return "Test UUID as JBoss not found"; - } - File configFile = new File(CONFIG_FILE); - String uuid = ""; - BufferedReader in = null; - try{ - // Verify whether instanceUUID file exist, - // If yes, read the content; if not, generate the instanceUUID and - // write to the file - if (configFile.exists()) { - // read the content of the file - in = new BufferedReader(new FileReader(CONFIG_FILE)); - if ((uuid = in.readLine()) == null) { - // the file is empty, regenerate the file - uuid = UUID.randomUUID().toString(); - try(BufferedWriter bw = new BufferedWriter(new FileWriter(configFile.getAbsoluteFile()))) { - bw.write(uuid); - } catch (IOException e) { - LOGGER.log(Level.SEVERE, "Error trying to write UUID file", e); - } - } - in.close(); - } else { - // file doesn't exist yet -> create the file and generate the - // instanceUUID - uuid = UUID.randomUUID().toString(); - configFile.getParentFile().mkdirs(); - configFile.createNewFile(); - try(BufferedWriter bw1 = new BufferedWriter(new FileWriter(configFile.getAbsoluteFile()))){ - bw1.write(uuid); - } catch (IOException e) { - LOGGER.log(Level.SEVERE, "Error trying to write UUID file", e); - } - } - } catch (IOException e) { - LOGGER.log(Level.SEVERE, "Error trying to read UUID file", e); - } finally { - try { - if (in != null) { - in.close(); - } - } catch (IOException ex) { - LOGGER.log(Level.SEVERE, "Error trying to close UUID file", ex); - } - } - return uuid; - } - - /** - * Set the requestId and serviceInstanceId - * - * @param reqId - * The requestId - * @param svcId - * The serviceInstanceId - */ - public static void setLogContext(String reqId, String svcId) { - if (null != reqId) { - MDC.put(REQUEST_ID, reqId); - } - - if (null != svcId) { - MDC.put(SERVICE_INSTANCE_ID, svcId); - } - } - - /** - * Set the remoteIp and the basic HTTP Authentication user - * - * @param remoteIpp - * The remote ip address - * @param userp - * The basic http authencitation user - */ - public static void setLoggerParameters(String remoteIpp, String userp) { - if (null != remoteIpp) { - MDC.put(REMOTE_HOST, remoteIpp); - } - if (null != userp) { - MDC.put(USER, userp); - } - } - - /** - * Set the serviceName - * - * @param serviceNamep - * The service name - */ - public static void setServiceName(String serviceNamep) { - if (null != serviceNamep) { - MDC.put(SERVICE_NAME, serviceNamep); - MDC.remove(SERVICE_NAME_IS_METHOD_NAME); - } - } - - /** - * Get the serviceName - * - * @return The service name - */ - public static String getServiceName() { - return MDC.get(SERVICE_NAME); - } - - /** - * Reset the serviceName - */ - public static void resetServiceName() { - MDC.remove(SERVICE_NAME); - } - - /** - * Set the requestId and serviceInstanceId based on the mso request - * - * @param msoRequest - * The mso request - */ - public static void setLogContext(MsoRequest msoRequest) { - if (msoRequest != null) { - MDC.put(REQUEST_ID, msoRequest.getRequestId()); - MDC.put(SERVICE_INSTANCE_ID, msoRequest.getServiceInstanceId()); - } else { - MDC.put(REQUEST_ID, DUMMY_VALUE); - MDC.put(SERVICE_INSTANCE_ID, DUMMY_VALUE); - } - } - - private String normalize(String input) { - if (input == null) { - return null; - } - String result = input.replace('|', '!'); - result = result.replace("\n", " - "); - return result; - } - - private String getNormalizedStackTrace(Throwable t) { - StringWriter sw = new StringWriter(); - PrintWriter pw = new PrintWriter(sw); - t.printStackTrace(pw); - return sw.toString().replace('|', '!').replace("\n", " - "); - } - - private void setDefaultLogCatalog(MsoLogger.Catalog cat) { - if ("APIH".equals(cat.toString())) { - exceptionArg = MessageEnum.APIH_GENERAL_EXCEPTION_ARG; - defaultException = MessageEnum.APIH_GENERAL_EXCEPTION; - defaultWarning = MessageEnum.APIH_GENERAL_WARNING; - defaultAudit = MessageEnum.APIH_AUDIT_EXEC; - defaultMetrics = MessageEnum.APIH_GENERAL_METRICS; - } else if ("RA".equals(cat.toString())) { - exceptionArg = MessageEnum.RA_GENERAL_EXCEPTION_ARG; - defaultException = MessageEnum.RA_GENERAL_EXCEPTION; - defaultWarning = MessageEnum.RA_GENERAL_WARNING; - defaultAudit = MessageEnum.RA_AUDIT_EXEC; - defaultMetrics = MessageEnum.RA_GENERAL_METRICS; - } else if ("BPEL".equals(cat.toString())) { - exceptionArg = MessageEnum.BPMN_GENERAL_EXCEPTION_ARG; - defaultException = MessageEnum.BPMN_GENERAL_EXCEPTION; - defaultWarning = MessageEnum.BPMN_GENERAL_WARNING; - defaultAudit = MessageEnum.BPMN_AUDIT_EXEC; - defaultMetrics = MessageEnum.BPMN_GENERAL_METRICS; - } else if ("ASDC".equals(cat.toString())) { - exceptionArg = MessageEnum.ASDC_GENERAL_EXCEPTION_ARG; - defaultException = MessageEnum.ASDC_GENERAL_EXCEPTION; - defaultWarning = MessageEnum.ASDC_GENERAL_WARNING; - defaultAudit = MessageEnum.ASDC_AUDIT_EXEC; - defaultMetrics = MessageEnum.ASDC_GENERAL_METRICS; - } else { - exceptionArg = MessageEnum.GENERAL_EXCEPTION_ARG; - defaultException = MessageEnum.GENERAL_EXCEPTION; - defaultWarning = MessageEnum.GENERAL_WARNING; - defaultAudit = MessageEnum.AUDIT_EXEC; - defaultMetrics = MessageEnum.GENERAL_METRICS; - } - } -} |