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 | |
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')
6 files changed, 0 insertions, 1917 deletions
diff --git a/common/src/main/java/org/openecomp/mso/logger/LogFilter.java b/common/src/main/java/org/openecomp/mso/logger/LogFilter.java deleted file mode 100644 index d799b47e15..0000000000 --- a/common/src/main/java/org/openecomp/mso/logger/LogFilter.java +++ /dev/null @@ -1,68 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP - SO - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. 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 javax.servlet.Filter; -import javax.servlet.FilterChain; -import javax.servlet.FilterConfig; -import javax.servlet.ServletException; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.slf4j.MDC; - -import java.io.IOException; -import java.security.Principal; - -public class LogFilter implements Filter { - @Override - public void destroy() { - // Nothing to do. - } - - @Override - public void doFilter(final ServletRequest request, final ServletResponse response, final FilterChain chain) throws IOException, ServletException { - final HttpServletRequest httpRequest = (HttpServletRequest) request; - final HttpServletResponse httpResponse = (HttpServletResponse) response; - - MDC.clear (); - MDC.put (MsoLogger.REMOTE_HOST, httpRequest.getRemoteAddr()); - - Principal userPrincipal = httpRequest.getUserPrincipal(); - if (null != userPrincipal) { - MDC.put (MsoLogger.PARTNERNAME, userPrincipal.getName ()); - } - //Set identity of calling application / component - String fromAppId = httpRequest.getHeader(MsoLogger.HEADER_FROM_APP_ID); - if(fromAppId != null && !fromAppId.isEmpty()) { - MDC.put (MsoLogger.FROM_APP_ID, fromAppId); - } - chain.doFilter(httpRequest, httpResponse); - } - - @Override - public void init(final FilterConfig config) throws ServletException { - // Nothing to do - } -} diff --git a/common/src/main/java/org/openecomp/mso/logger/MessageEnum.java b/common/src/main/java/org/openecomp/mso/logger/MessageEnum.java deleted file mode 100644 index 419bbf8ca6..0000000000 --- a/common/src/main/java/org/openecomp/mso/logger/MessageEnum.java +++ /dev/null @@ -1,233 +0,0 @@ -/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. 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 com.att.eelf.i18n.EELFResolvableErrorEnum;
-import com.att.eelf.i18n.EELFResourceManager;
-
-public enum MessageEnum implements EELFResolvableErrorEnum{
- // Api Handler Messages
- APIH_REQUEST_NULL,
- APIH_QUERY_FOUND,
- APIH_QUERY_NOT_FOUND,
- APIH_QUERY_PARAM_WRONG,
- APIH_DB_ACCESS_EXC,
- APIH_DB_ACCESS_EXC_REASON,
- APIH_VALIDATION_ERROR,
- APIH_REQUEST_VALIDATION_ERROR,
- APIH_SERVICE_VALIDATION_ERROR,
- APIH_GENERAL_EXCEPTION_ARG,
- APIH_GENERAL_EXCEPTION,
- APIH_GENERAL_WARNING,
- APIH_AUDIT_EXEC,
- APIH_GENERAL_METRICS,
- APIH_DUPLICATE_CHECK_EXC,
- APIH_DUPLICATE_FOUND,
- APIH_BAD_ORDER,
- APIH_DB_ATTRIBUTE_NOT_FOUND,
- APIH_BPEL_COMMUNICATE_ERROR,
- APIH_BPEL_RESPONSE_ERROR,
- APIH_WARP_REQUEST,
- APIH_ERROR_FROM_BPEL_SERVER,
- APIH_DB_INSERT_EXC,
- APIH_DB_UPDATE_EXC,
- APIH_NO_PROPERTIES,
- APIH_PROPERTY_LOAD_SUC,
- APIH_LOAD_PROPERTIES_FAIL,
- APIH_SDNC_COMMUNICATE_ERROR,
- APIH_SDNC_RESPONSE_ERROR,
- APIH_CANNOT_READ_SCHEMA,
- APIH_HEALTH_CHECK_EXCEPTION,
- APIH_REQUEST_VALIDATION_ERROR_REASON,
- APIH_JAXB_MARSH_ERROR,
- APIH_JAXB_UNMARSH_ERROR,
- APIH_VNFREQUEST_VALIDATION_ERROR,
- APIH_DOM2STR_ERROR,
- APIH_READ_VNFOUTPUT_CLOB_EXCEPTION,
- APIH_DUPLICATE_CHECK_EXC_ATT,
- APIH_GENERATED_REQUEST_ID,
- APIH_GENERATED_SERVICE_INSTANCE_ID,
- APIH_REPLACE_REQUEST_ID,
- // Resource Adapter Messages
- RA_GENERAL_EXCEPTION_ARG,
- RA_GENERAL_EXCEPTION,
- RA_GENERAL_WARNING,
- RA_MISSING_PARAM,
- RA_AUDIT_EXEC,
- RA_GENERAL_METRICS,
- RA_CREATE_STACK_TIMEOUT,
- RA_DELETE_STACK_TIMEOUT,
- RA_UPDATE_STACK_TIMEOUT,
- RA_CONNECTION_EXCEPTION,
- RA_PARSING_ERROR,
- RA_PROPERTIES_NOT_FOUND,
- RA_LOAD_PROPERTIES_SUC,
- RA_NETWORK_ALREADY_EXIST,
- RA_UPDATE_NETWORK_ERR,
- RA_CREATE_STACK_ERR,
- RA_UPDATE_STACK_ERR,
- RA_CREATE_TENANT_ERR,
- RA_NETWORK_NOT_FOUND,
- RA_NETWORK_ORCHE_MODE_NOT_SUPPORT,
- RA_CREATE_NETWORK_EXC,
- RA_NS_EXC,
- RA_PARAM_NOT_FOUND,
- RA_CONFIG_EXC,
- RA_UNKOWN_PARAM,
- RA_VLAN_PARSE,
- RA_DELETE_NETWORK_EXC,
- RA_ROLLBACK_NULL,
- RA_TENANT_NOT_FOUND,
- RA_QUERY_NETWORK_EXC,
- RA_CREATE_NETWORK_NOTIF_EXC,
- RA_ASYNC_ROLLBACK,
- RA_WSDL_NOT_FOUND,
- RA_WSDL_URL_CONVENTION_EXC,
- RA_INIT_NOTIF_EXC,
- RA_SET_CALLBACK_AUTH_EXC,
- RA_FAULT_INFO_EXC,
- RA_MARSHING_ERROR,
- RA_PARSING_REQUEST_ERROR,
- RA_SEND_REQUEST_SDNC,
- RA_RESPONSE_FROM_SDNC,
- RA_EXCEPTION_COMMUNICATE_SDNC,
- RA_EVALUATE_XPATH_ERROR,
- RA_ANALYZE_ERROR_EXC,
- RA_ERROR_GET_RESPONSE_SDNC,
- RA_CALLBACK_BPEL,
- RA_INIT_CALLBACK_WSDL_ERR,
- RA_CALLBACK_BPEL_EXC,
- RA_CALLBACK_BPEL_COMPLETE,
- RA_SDNC_MISS_CONFIG_PARAM,
- RA_SDNC_INVALID_CONFIG,
- RA_PRINT_URL,
- RA_ERROR_CREATE_SDNC_REQUEST,
- RA_ERROR_CREATE_SDNC_RESPONSE,
- RA_ERROR_CONVERT_XML2STR,
- RA_RECEIVE_SDNC_NOTIF,
- RA_INIT_SDNC_ADAPTER,
- RA_SEND_REQUEST_APPC_ERR,
- RA_SEND_REQUEST_SDNC_ERR,
- RA_RECEIVE_BPEL_REQUEST,
- RA_TENANT_ALREADY_EXIST,
- RA_UPDATE_TENANT_ERR,
- RA_DELETE_TEMAMT_ERR,
- RA_ROLLBACK_TENANT_ERR,
- RA_QUERY_VNF_ERR,
- RA_VNF_ALREADY_EXIST,
- RA_VNF_UNKNOWN_PARAM,
- RA_VNF_EXTRA_PARAM,
- RA_CREATE_VNF_ERR,
- RA_VNF_NOT_EXIST,
- RA_UPDATE_VNF_ERR,
- RA_DELETE_VNF_ERR,
- RA_ASYNC_CREATE_VNF,
- RA_SEND_VNF_NOTIF_ERR,
- RA_ASYNC_CREATE_VNF_COMPLETE,
- RA_ASYNC_UPDATE_VNF,
- RA_ASYNC_UPDATE_VNF_COMPLETE,
- RA_ASYNC_QUERY_VNF,
- RA_ASYNC_QUERY_VNF_COMPLETE,
- RA_ASYNC_DELETE_VNF,
- RA_ASYNC_DELETE_VNF_COMPLETE,
- RA_ASYNC_ROLLBACK_VNF,
- RA_ASYNC_ROLLBACK_VNF_COMPLETE,
- RA_ROLLBACK_VNF_ERR,
- RA_DB_INVALID_STATUS,
- RA_CANT_UPDATE_REQUEST,
- RA_DB_REQUEST_NOT_EXIST,
- RA_CONFIG_NOT_FOUND,
- RA_CONFIG_LOAD,
- RA_RECEIVE_WORKFLOW_MESSAGE,
- // BPEL engine Messages
- BPMN_GENERAL_INFO,
- BPMN_GENERAL_EXCEPTION_ARG,
- BPMN_GENERAL_EXCEPTION,
- BPMN_GENERAL_WARNING,
- BPMN_AUDIT_EXEC,
- BPMN_GENERAL_METRICS,
- BPMN_URN_MAPPING_FAIL,
- BPMN_VARIABLE_NULL,
- BPMN_CALLBACK_EXCEPTION,
- // ASDC Messages
- ASDC_GENERAL_EXCEPTION_ARG,
- ASDC_GENERAL_EXCEPTION,
- ASDC_GENERAL_WARNING,
- ASDC_GENERAL_INFO,
- ASDC_AUDIT_EXEC,
- ASDC_GENERAL_METRICS,
- ASDC_CREATE_SERVICE,
- ASDC_ARTIFACT_ALREADY_DEPLOYED,
- ASDC_CREATE_ARTIFACT,
- ASDC_ARTIFACT_INSTALL_EXC,
- ASDC_ARTIFACT_ALREADY_DEPLOYED_DETAIL,
- ASDC_ARTIFACT_NOT_DEPLOYED_DETAIL,
- ASDC_ARTIFACT_CHECK_EXC,
- ASDC_INIT_ASDC_CLIENT_EXC,
- ASDC_INIT_ASDC_CLIENT_SUC,
- ASDC_LOAD_ASDC_CLIENT_EXC,
- ASDC_SINGLETON_CHECKT_EXC,
- ASDC_SHUTDOWN_ASDC_CLIENT_EXC,
- ASDC_CHECK_HEAT_TEMPLATE,
- ASDC_START_INSTALL_ARTIFACT,
- ASDC_ARTIFACT_TYPE_NOT_SUPPORT,
- ASDC_ARTIFACT_ALREADY_EXIST,
- ASDC_ARTIFACT_DOWNLOAD_SUC,
- ASDC_ARTIFACT_DOWNLOAD_FAIL,
- ASDC_START_DEPLOY_ARTIFACT,
- ASDC_SEND_NOTIF_ASDC,
- ASDC_SEND_NOTIF_ASDC_EXEC,
- ASDC_RECEIVE_CALLBACK_NOTIF,
- ASDC_RECEIVE_SERVICE_NOTIF,
- ASDC_ARTIFACT_NULL,
- ASDC_SERVICE_NOT_SUPPORT,
- ASDC_ARTIFACT_DEPLOY_SUC,
- ASDC_PROPERTIES_NOT_FOUND,
- ASDC_PROPERTIES_LOAD_SUCCESS,
- // Default Messages, in case Log catalog is not defined
- GENERAL_EXCEPTION_ARG,
- GENERAL_EXCEPTION,
- GENERAL_WARNING,
- AUDIT_EXEC,
- GENERAL_METRICS,
- LOGGER_SETUP,
- LOGGER_NOT_FOUND,
- LOGGER_UPDATE_SUC,
- LOGGER_UPDATE_DEBUG,
- LOGGER_UPDATE_DEBUG_SUC,
- LOAD_PROPERTIES_SUC,
- NO_PROPERTIES,
- MADATORY_PARAM_MISSING,
- LOAD_PROPERTIES_FAIL,
- INIT_LOGGER,
- INIT_LOGGER_FAIL,
- JAXB_EXCEPTION,
- IDENTITY_SERVICE_NOT_FOUND;
-
- static {
- EELFResourceManager.loadMessageBundle("GenericMessages");
- EELFResourceManager.loadMessageBundle("ApiHandler");
- EELFResourceManager.loadMessageBundle("BPMN");
- EELFResourceManager.loadMessageBundle("ResourceAdapter");
- EELFResourceManager.loadMessageBundle("ASDC");
- }
-}
diff --git a/common/src/main/java/org/openecomp/mso/logger/MsoAlarmLogger.java b/common/src/main/java/org/openecomp/mso/logger/MsoAlarmLogger.java deleted file mode 100644 index b2b8d0aa33..0000000000 --- a/common/src/main/java/org/openecomp/mso/logger/MsoAlarmLogger.java +++ /dev/null @@ -1,181 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP - SO - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. 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.File; -import javax.servlet.ServletContextEvent; -import javax.servlet.ServletContextListener; - -import org.slf4j.LoggerFactory; - -import ch.qos.logback.classic.Level; -import ch.qos.logback.classic.Logger; -import ch.qos.logback.classic.LoggerContext; -import ch.qos.logback.classic.encoder.PatternLayoutEncoder; -import ch.qos.logback.classic.spi.ILoggingEvent; -import ch.qos.logback.core.rolling.RollingFileAppender; -import ch.qos.logback.core.rolling.TimeBasedRollingPolicy; - -/** - * Wrapper around log4j and Nagios NRDP passive alarming for MSO. - * - * For local alarm logging, this class will look for an alarm log file name - * in the servlet context parameter "mso.alarms.file". If none is found, - * it will look for an MsoProperty of the same name. As a last resort, - * it will use the default path "/var/log/ecomp/MSO/alarms/alarm.log". - * It is expected that all alarms within an application will use the same - * alarm file, so there is no way to dynamically add other alarm files. - * - * Alarms are logged as a simple pipe-delimited string of the format: - * <dateTime>|<alarmType>|<state>|<detailMessage> - * - * This class also supports real-time Nagios NRDP alarming. If enabled via - * MsoProperties, all alarms generated and logged to the local alarm file will - * also be transmitted to a Nagios NRDP instance. NRDP requires 4 parameters - * in service alarm events (all Mso Alarms will be Service Alarms): - * hostname, servicename, state, detail - * - * The log file format is also intended to be compatible with Nagios NRDP for - * non-real-time reporting. The command-line tool for sending alarms is - * is "send_nrdp.php", which takes the same 4 parameters as input. - * It will be easy enough to translate entries from an alarm.log file to - * NRDP if real-time NRDP alarming is not enabled. - * - * For Nagios integration, the alarmTypes should all match "service names" - * configured in the receiving Nagios server. Also, the alarm state will - * be limited to the 4 values defined by Nagios: - * 0 = OK, 1 = Warning, 2 = Critical, 3 = Unknown - * - * - */ -public class MsoAlarmLogger implements ServletContextListener { - - private Logger alarmLogger = (ch.qos.logback.classic.Logger) LoggerFactory.getLogger(MSO_ALARM_CONTEXT); - private static RollingFileAppender<ILoggingEvent> fileAppender = null; - public static final String DEFAULT_MSO_ALARM_FILE = "/var/log/ecomp/MSO/alarms/alarm.log"; - public static final String MSO_ALARM_CONTEXT = "mso.alarms"; - - public static final int OK = 0; - public static final int WARNING = 1; - public static final int CRITICAL = 2; - public static final int UNKNOWN = 3; - - /** - * Get the default MSO Alarm Logger - */ - public MsoAlarmLogger () { - - initializeAlarmLogger(null); - - } - - public MsoAlarmLogger (String alarmFile) { - initializeAlarmLogger(alarmFile); - - } - - /** - * Method to record an alarm. - * - * @param alarm - the alarm identifier (Nagios "service") - * @param state - the alarm state/severity, based on Nagios service - * state values: 0 = OK, 1 = Warning, 2 = Critical, 3 = Unknown - * @param detail - detail message (may contain additional internal - * structure per alarm type) - */ - public void sendAlarm (String alarm, int state, String detail) { - // Write the alarm to Log file - if (alarmLogger != null) { - String output = alarm + "|" + state + "|" + detail; - alarmLogger.info (output); - } - - } - - @Override - public void contextDestroyed (ServletContextEvent event) { - // Nothing to do... - } - - @Override - public void contextInitialized (ServletContextEvent event) { - String msoAlarmFile = event.getServletContext ().getInitParameter ("mso.alarm.file"); - if (msoAlarmFile == null) { - msoAlarmFile = DEFAULT_MSO_ALARM_FILE; - } - - initializeAlarmLogger (msoAlarmFile); - } - - private void initializeAlarmLogger (String alarmFile) { - synchronized (MsoAlarmLogger.class) { - if (fileAppender == null) { - if (alarmFile != null) { - fileAppender = MsoAlarmLogger.getAppender (alarmFile); - } else { - fileAppender = MsoAlarmLogger.getAppender (DEFAULT_MSO_ALARM_FILE); - } - } - } - // The alarmLogger was static originally. - // The initialization of the alarmLogger was fine, but not sure why, it lost its appender info later - // Due to that issue, the alarmLogger is not static any more. - // Instead static attribute fileAppender is added and will be assigned to the alarmLogger every time new MsoAlarmLogger is created. - alarmLogger.setLevel (Level.INFO); - alarmLogger.addAppender (fileAppender); - alarmLogger.setAdditive (false); - } - - - private static RollingFileAppender<ILoggingEvent> getAppender (String msoAlarmFile) { - // Create a Logger for alarms. Just use a default Pattern that outputs - // a message. MsoAlarmLogger will handle the formatting. - File alarmFile = new File (msoAlarmFile); - File alarmDir = alarmFile.getParentFile (); - if (!alarmDir.exists ()) { - alarmDir.mkdirs (); - } - - String logPattern = "%d{yyyy-MM-dd HH:mm:ss}|%m%n"; - - LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory(); - PatternLayoutEncoder encoder=new PatternLayoutEncoder(); - encoder.setPattern(logPattern); - encoder.setContext(context); - encoder.start(); - RollingFileAppender<ILoggingEvent> fileAppender= new RollingFileAppender<>(); - TimeBasedRollingPolicy<ILoggingEvent> rollingPolicy= new TimeBasedRollingPolicy<>(); - rollingPolicy.setContext(context); - rollingPolicy.setFileNamePattern(msoAlarmFile + ".%d"); - rollingPolicy.setParent(fileAppender); - rollingPolicy.start(); - fileAppender.setFile(msoAlarmFile); - fileAppender.setAppend(true); - fileAppender.setEncoder(encoder); - fileAppender.setRollingPolicy(rollingPolicy); - fileAppender.setContext(context); - fileAppender.start(); - - return fileAppender; - } - -} diff --git a/common/src/main/java/org/openecomp/mso/logger/MsoLogInitializer.java b/common/src/main/java/org/openecomp/mso/logger/MsoLogInitializer.java deleted file mode 100644 index 6ed2786f35..0000000000 --- a/common/src/main/java/org/openecomp/mso/logger/MsoLogInitializer.java +++ /dev/null @@ -1,108 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP - SO - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. 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.File; - -import javax.servlet.ServletContextEvent; -import javax.servlet.ServletContextListener; -import javax.servlet.annotation.WebListener; - -import org.slf4j.LoggerFactory; - -import ch.qos.logback.classic.LoggerContext; -import ch.qos.logback.classic.joran.JoranConfigurator; - - -/** - * This class will attempt to initialize MSO log4j when part of a web application. - * It will look for the logback configuration file logback.xml in the - * following order: - * 1. In an init-param "log.configuration" in web.xml - * 2. TODO: In a property "log.configuration" in an "application.properties" file - * 3. In the default location "/etc/ecomp/mso/config" - * 4. Using the log4j default (check system property log.configuration or - * just look on the classpath for logback.xml) - * - * - */ -@WebListener -public class MsoLogInitializer implements ServletContextListener -{ - private static String DEFAULT_LOG4J_PROPERTIES_FILE = "/etc/ecomp/mso/config/logback.xml"; - private static String prefixMsoPropertiesPath = System.getProperty("mso.config.path"); - static { - if (prefixMsoPropertiesPath == null) { - prefixMsoPropertiesPath = "/"; - } else if (!(prefixMsoPropertiesPath.charAt(prefixMsoPropertiesPath.length() - 1) == '/')) { - prefixMsoPropertiesPath = prefixMsoPropertiesPath + "/"; - } - } - - public MsoLogInitializer () { - } - - - @Override - public void contextDestroyed(ServletContextEvent event) { - // Nothing to do... - } - - @Override - public void contextInitialized(ServletContextEvent event) - { - String logPropertiesFile = null; - try { - // Look first in the init-parameters - String initParam = event.getServletContext().getInitParameter("log.configuration"); - if (initParam != null && fileIsReadable(prefixMsoPropertiesPath + initParam)) { - logPropertiesFile = prefixMsoPropertiesPath + initParam; - } - else if (fileIsReadable(DEFAULT_LOG4J_PROPERTIES_FILE)) { - logPropertiesFile = DEFAULT_LOG4J_PROPERTIES_FILE; - } - - if (logPropertiesFile != null) { - // Initialize loggers with the specified file. If no such file was - // specified, will use the default Log4j resolution. - LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory(); - JoranConfigurator jc = new JoranConfigurator(); - jc.setContext(context); - context.reset(); - jc.doConfigure(logPropertiesFile); - // Try it out - MsoLogger initLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.GENERAL); - initLogger.info(MessageEnum.INIT_LOGGER, logPropertiesFile, "", ""); - } - } catch (Exception e) { - MsoLogger initLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.GENERAL); - initLogger.error (MessageEnum.INIT_LOGGER_FAIL, "", "", MsoLogger.ErrorCode.UnknownError, "", e); - } - } - - private boolean fileIsReadable (String filePath) { - File f = new File(filePath); - if (f.exists() && f.canRead()) - return true; - return false; - } -} 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; - } - } -} diff --git a/common/src/main/java/org/openecomp/mso/logger/MsoLoggingServlet.java b/common/src/main/java/org/openecomp/mso/logger/MsoLoggingServlet.java deleted file mode 100644 index dd42efbfda..0000000000 --- a/common/src/main/java/org/openecomp/mso/logger/MsoLoggingServlet.java +++ /dev/null @@ -1,163 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP - SO - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. 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.util.List; - -import javax.ws.rs.DefaultValue; -import javax.ws.rs.GET; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.QueryParam; -import javax.ws.rs.core.Response; - -import org.slf4j.LoggerFactory; - -import ch.qos.logback.classic.Level; -import ch.qos.logback.classic.Logger; -import ch.qos.logback.classic.LoggerContext; -import ch.qos.logback.classic.joran.JoranConfigurator; -import ch.qos.logback.core.Appender; - -import com.wordnik.swagger.annotations.Api; -import com.wordnik.swagger.annotations.ApiOperation; - -@Path("/logging") -@Api(value="/logging",description="logging") -public class MsoLoggingServlet { - - private static final String DEBUGLOG = "asyncEELFDebug"; - private MsoLogger logger = MsoLogger.getMsoLogger (MsoLogger.Catalog.GENERAL); - private static final String GENERAL_LOGGER = "com.att.eelf.error"; - private static final String AUDIT_LOGGER = "com.att.eelf.audit"; - private static final String METRICS_LOGGER = "com.att.eelf.metrics"; - - @GET - @Path("/setLevel/{logContext}/{level}") - @Produces("text/plain") - @ApiOperation(value="message print",response=Response.class) - public Response setLogLevel (@PathParam("logContext") String logContext, @PathParam("level") String level) { - logger.info (MessageEnum.LOGGER_SETUP, "", ""); - - LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory(); - JoranConfigurator jc = new JoranConfigurator(); - jc.setContext(context); - Logger updateLogger = context.getLogger (logContext); - - if (updateLogger == null) { - logger.info (MessageEnum.LOGGER_NOT_FOUND, logContext, "", ""); - String response = "Unknown logger: " + logContext; - return Response.status (200).entity (response).build (); - } - - Level currentLevel = updateLogger.getLevel(); - if (!currentLevel.equals(Level.toLevel(level))) { - Level newLevel = Level.toLevel (level); - updateLogger.setLevel (newLevel); - logger.info (MessageEnum.LOGGER_UPDATE_SUC, updateLogger.getName (), currentLevel.toString(), newLevel.toString()); - } - - String response = "Log level set to: " + level + " for " + updateLogger.getName (); - return Response.status (200).entity (response).build (); - - } - - @GET - @Path("/loggers") - @Produces("text/plain") - @SuppressWarnings("rawtypes") - @ApiOperation(value="message print",response=Response.class) - public Response getLoggers () { - StringBuilder response = new StringBuilder (); - LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory(); - JoranConfigurator jc = new JoranConfigurator(); - jc.setContext(context); - List <Logger> loggerList = context.getLoggerList(); - for (Logger logger:loggerList) { - //if (logger.getLevel() != null) { - response.append(logger.getName()).append(":").append(logger.getLevel()).append(" (") - .append(logger.getEffectiveLevel()).append(")\n"); - //} - } - return Response.status (200).entity (response).build (); - - } - - @GET - @Path("/debug") - @Produces("text/plain") - @ApiOperation(value="message print",response=Response.class) - @SuppressWarnings("rawtypes") - /* - * Debug log is used as a general log to store all the logs events, including events generated by MSO code or by - * components used by MSO. - * This method will only enable/disable the function to store MSO generated events into debug log, - * since those events will also be generated to error, audit, metrics log. - * The events generated by other components will not be affected by this interface. - */ - public Response updateDebugAppender (@DefaultValue("true") @QueryParam("enable") Boolean enable) { - String response; - - LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory(); - JoranConfigurator jc = new JoranConfigurator(); - jc.setContext(context); - List <Logger> loggerList = context.getLoggerList(); - Logger rootLogger = context.getLogger("ROOT"); - Appender appender = rootLogger.getAppender(DEBUGLOG); - - if (null == appender) { - return Response.status (500).entity ("Not able to found Debug appender. Please verify to make sure the needed logback file is present in the config folder.").build (); - } - - if (enable) { - logger.info (MessageEnum.LOGGER_UPDATE_DEBUG, "", ""); - - for (Logger logger: loggerList) { - if (isMsoLogger (logger.getName ()) && logger.getAppender (DEBUGLOG) == null && logger.getLevel () != null) { - logger.addAppender (appender); - logger.setAdditive(false); - } - } - logger.info (MessageEnum.LOGGER_UPDATE_DEBUG_SUC, "enabled", "", ""); - response = "Debuglog successfully enabled."; - } else { - logger.info (MessageEnum.LOGGER_UPDATE_DEBUG, "", ""); - for (Logger logger: loggerList) { - if (isMsoLogger (logger.getName ())) { - logger.detachAppender (appender); - } - } - logger.info (MessageEnum.LOGGER_UPDATE_DEBUG_SUC, "disabled", "", ""); - response = "Debuglog successfully disabled."; - } - return Response.status (200).entity (response).build (); - - - } - - private boolean isMsoLogger (String loggerName) { - return loggerName.contains (GENERAL_LOGGER) || loggerName.equals (AUDIT_LOGGER) - || loggerName.equals (METRICS_LOGGER); - } - -} |