X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=ecomp-portal-BE-common%2Fsrc%2Fmain%2Fjava%2Forg%2Fopenecomp%2Fportalapp%2Fportal%2Flogging%2Flogic%2FEPLogUtil.java;h=ebda67e6d4c5b8afc81cb200c699ccbde921db95;hb=627badaf69987c01811c477219fd943757a635f5;hp=aa86765b33448849046b9932392cd4a2599f18cb;hpb=ba838f2e13f1e8050c75e68bd3733d56d8f416d5;p=portal.git diff --git a/ecomp-portal-BE-common/src/main/java/org/openecomp/portalapp/portal/logging/logic/EPLogUtil.java b/ecomp-portal-BE-common/src/main/java/org/openecomp/portalapp/portal/logging/logic/EPLogUtil.java index aa86765b..ebda67e6 100644 --- a/ecomp-portal-BE-common/src/main/java/org/openecomp/portalapp/portal/logging/logic/EPLogUtil.java +++ b/ecomp-portal-BE-common/src/main/java/org/openecomp/portalapp/portal/logging/logic/EPLogUtil.java @@ -1,270 +1,285 @@ -/*- - * ================================================================================ - * ECOMP Portal - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property - * ================================================================================ - * 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. - * ================================================================================ - */ -package org.openecomp.portalapp.portal.logging.logic; - -import static com.att.eelf.configuration.Configuration.MDC_ALERT_SEVERITY; - -import java.text.MessageFormat; - -import org.slf4j.MDC; - -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; - -import org.openecomp.portalsdk.core.logging.format.AlarmSeverityEnum; -import org.openecomp.portalsdk.core.logging.format.ErrorSeverityEnum; -import org.openecomp.portalsdk.core.logging.logic.EELFLoggerDelegate; -import org.openecomp.portalsdk.core.web.support.UserUtils; -import org.openecomp.portalapp.portal.logging.format.EPAppMessagesEnum; - -public class EPLogUtil { - - // This class has no logger. It uses loggers passed to it. - - /** - * Formats and writes a message to the error log with the class name and the - * specified parameters, using log level info, warn or error appropriate for - * the specified severity - * - * @param classLogger - * Logger for the class where the error occurred; the logger - * carries the class name. - * @param epMessageEnum - * Enum carrying alarm and error severity - * @param param - * Values used to build the message. - */ - public static void logEcompError(EELFLoggerDelegate classLogger, EPAppMessagesEnum epMessageEnum, String... param) { - logEcompError(classLogger, epMessageEnum, null, param); - } - - /** - * Formats and writes a message to the error log with the class name and the - * specified parameters, using log level info, warn or error appropriate for - * the specified severity - * - * @param classLogger - * Logger for the class where the error occurred; the logger - * carries the class name. - * @param epMessageEnum - * Enum carrying alarm and error severity - * @param param - * Values used to build the message. - */ - private static EELFLogger errorLogger = EELFManager.getInstance().getErrorLogger(); - public static void logEcompError(EPAppMessagesEnum epMessageEnum, String... param) { - try { - AlarmSeverityEnum alarmSeverityEnum = epMessageEnum.getAlarmSeverity(); - ErrorSeverityEnum errorSeverityEnum = epMessageEnum.getErrorSeverity(); - - MDC.put(MDC_ALERT_SEVERITY, alarmSeverityEnum.name()); - MDC.put("ErrorCode", epMessageEnum.getErrorCode()); - MDC.put("ErrorDescription", epMessageEnum.getErrorDescription()); - MDC.put("ClassName", EPLogUtil.class.getName()); - - String resolution = EPLogUtil.formatMessage(epMessageEnum.getDetails() + " " + epMessageEnum.getResolution(), (Object[]) param); - if (errorSeverityEnum == ErrorSeverityEnum.WARN) { - errorLogger.warn(resolution); - } else if(errorSeverityEnum == ErrorSeverityEnum.INFO) { - errorLogger.info(resolution); - } else { - errorLogger.error(resolution); - } - } catch(Exception e) { - errorLogger.error("Failed to log the error code. Details: " + UserUtils.getStackTrace(e)); - } finally { - MDC.remove("ErrorCode"); - MDC.remove("ErrorDescription"); - MDC.remove("ClassName"); - MDC.remove(MDC_ALERT_SEVERITY); - } - } - - /** - * Formats and writes a message to the error log with the class name, - * throwable and the specified parameters, using log level info, warn or - * error appropriate for the specified severity - * - * @param classLogger - * Logger for the class where the error occurred; the logger - * carries the class name. - * @param epMessageEnum - * Enum carrying alarm and error severity - * @param th - * Throwable; ignored if null - * @param param - * Array of Strings used to build the message. - */ - @SuppressWarnings("static-access") - public static void logEcompError(EELFLoggerDelegate classLogger, EPAppMessagesEnum epMessageEnum, Throwable th, - String... param) { - - AlarmSeverityEnum alarmSeverityEnum = epMessageEnum.getAlarmSeverity(); - ErrorSeverityEnum errorSeverityEnum = epMessageEnum.getErrorSeverity(); - - MDC.put(MDC_ALERT_SEVERITY, alarmSeverityEnum.name()); - MDC.put("ErrorCode", epMessageEnum.getErrorCode()); - MDC.put("ErrorDescription", epMessageEnum.getErrorDescription()); - - final String message = EPLogUtil.formatMessage(epMessageEnum.getDetails() + " " + epMessageEnum.getResolution(), - (Object[]) param); - if (errorSeverityEnum == ErrorSeverityEnum.INFO) { - if (th == null) - classLogger.info(classLogger.errorLogger, message); - else - classLogger.info(classLogger.errorLogger, message, th); - } else if (errorSeverityEnum == ErrorSeverityEnum.WARN) { - if (th == null) - classLogger.warn(classLogger.errorLogger, message); - else - classLogger.warn(classLogger.errorLogger, message, th); - } else { - if (th == null) - classLogger.error(classLogger.errorLogger, message); - else - classLogger.error(classLogger.errorLogger, message, th); - } - - // Clean up - MDC.remove(MDC_ALERT_SEVERITY); - MDC.remove("ErrorCode"); - MDC.remove("ErrorDescription"); - } - - /** - * Builds a string using the format and parameters. - * @param message - * @param args - * @return - */ - private static String formatMessage(String message, Object... args) { - StringBuilder sbFormattedMessage = new StringBuilder(); - if (args != null && args.length > 0 && message != null && message != "") { - MessageFormat mf = new MessageFormat(message); - sbFormattedMessage.append(mf.format(args)); - } else { - sbFormattedMessage.append(message); - } - return sbFormattedMessage.toString(); - } - - /** - * Builds a comma-separated string of values to document a user action. - * - * @param action - * @param activity - * @param userId - * @param affectedId - * @param comment - * @return Value suitable for writing to the audit log file. - */ - public static String formatAuditLogMessage(String action, String activity, String userId, String affectedId, - String comment) { - StringBuilder auditLogMsg = new StringBuilder(); - auditLogMsg.append("Click_A:["); - if (action != null && !action.equals("")) { - auditLogMsg.append(" Action: "); - auditLogMsg.append(action); - } - - if (activity != null && !activity.equals("")) { - auditLogMsg.append(",Activity CD: "); - auditLogMsg.append(activity); - } - - if (userId != null && !userId.equals("")) { - auditLogMsg.append(",User ID: "); - auditLogMsg.append(userId); - } - - if (affectedId != null && !affectedId.equals("")) { - auditLogMsg.append(",Affected ID: "); - auditLogMsg.append(affectedId); - } - - if (comment != null && !comment.equals("")) { - auditLogMsg.append(",Comment: "); - auditLogMsg.append(comment); - } - auditLogMsg.append("]"); - return auditLogMsg.toString(); - } - - /** - * Builds a comma-separated string of values to document a user browser - * action. - * - * @param orgUserId - * @param action - * @param activity - * @param actionLink - * @param page - * @param function - * @param type - * @return Value suitable for writing to the audit log file. - */ - public static String formatStoreAnalyticsAuditLogMessage(String orgUserId, String appName, String action, String activity, - String actionLink, String page, String function, String type) { - StringBuilder auditLogStoreAnalyticsMsg = new StringBuilder(); - auditLogStoreAnalyticsMsg.append("Click_Analytics:["); - if (orgUserId != null && !orgUserId.equals("")) { - auditLogStoreAnalyticsMsg.append(" Organization User ID: "); - auditLogStoreAnalyticsMsg.append(orgUserId); - } - - if (appName != null && !appName.equals("")) { - auditLogStoreAnalyticsMsg.append(",AppName: "); - auditLogStoreAnalyticsMsg.append(appName); - } - - if (action != null && !action.equals("")) { - auditLogStoreAnalyticsMsg.append(",Action: "); - auditLogStoreAnalyticsMsg.append(action); - } - - if (activity != null && !activity.equals("")) { - auditLogStoreAnalyticsMsg.append(",Activity: "); - auditLogStoreAnalyticsMsg.append(activity); - } - - if (actionLink != null && !actionLink.equals("")) { - auditLogStoreAnalyticsMsg.append(",ActionLink: "); - auditLogStoreAnalyticsMsg.append(actionLink); - } - - if (page != null && !page.equals("")) { - auditLogStoreAnalyticsMsg.append(",Page: "); - auditLogStoreAnalyticsMsg.append(page); - } - - if (function != null && !function.equals("")) { - auditLogStoreAnalyticsMsg.append(",Function: "); - auditLogStoreAnalyticsMsg.append(function); - } - - if (type != null && !type.equals("")) { - auditLogStoreAnalyticsMsg.append(",Type: "); - auditLogStoreAnalyticsMsg.append(type); - } - auditLogStoreAnalyticsMsg.append("]"); - return auditLogStoreAnalyticsMsg.toString(); - } - -} +/*- + * ================================================================================ + * ECOMP Portal + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property + * ================================================================================ + * 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. + * ================================================================================ + */ +package org.openecomp.portalapp.portal.logging.logic; + +import static com.att.eelf.configuration.Configuration.MDC_ALERT_SEVERITY; + +import java.text.MessageFormat; + +import org.openecomp.portalapp.portal.logging.format.EPAppMessagesEnum; +import org.openecomp.portalsdk.core.logging.format.AlarmSeverityEnum; +import org.openecomp.portalsdk.core.logging.format.ErrorSeverityEnum; +import org.openecomp.portalsdk.core.logging.logic.EELFLoggerDelegate; +import org.openecomp.portalsdk.core.web.support.UserUtils; +import org.slf4j.MDC; + +import com.att.eelf.configuration.EELFLogger; +import com.att.eelf.configuration.EELFManager; + +public class EPLogUtil { + + // This class has no logger of its own; it uses loggers passed to it. + private static EELFLogger errorLogger = EELFManager.getInstance().getErrorLogger(); + + /** + * Formats and writes a message to the error log with the class name and the + * specified parameters, using log level info, warn or error appropriate for + * the specified severity + * + * @param classLogger + * Logger for the class where the error occurred; the logger + * carries the class name. + * @param epMessageEnum + * Enum carrying alarm and error severity + * @param param + * Values used to build the message. + */ + public static void logEcompError(EELFLoggerDelegate classLogger, EPAppMessagesEnum epMessageEnum, String... param) { + logEcompError(classLogger, epMessageEnum, null, param); + } + + /** + * Formats and writes a message to the error log with the class name and the + * specified parameters, using log level info, warn or error appropriate for + * the specified severity + * + * @param classLogger + * Logger for the class where the error occurred; the logger + * carries the class name. + * @param epMessageEnum + * Enum carrying alarm and error severity + * @param param + * Values used to build the message. + */ + public static void logEcompError(EPAppMessagesEnum epMessageEnum, String... param) { + try { + AlarmSeverityEnum alarmSeverityEnum = epMessageEnum.getAlarmSeverity(); + ErrorSeverityEnum errorSeverityEnum = epMessageEnum.getErrorSeverity(); + + MDC.put(MDC_ALERT_SEVERITY, alarmSeverityEnum.name()); + MDC.put("ErrorCode", epMessageEnum.getErrorCode()); + MDC.put("ErrorDescription", epMessageEnum.getErrorDescription()); + MDC.put("ClassName", EPLogUtil.class.getName()); + + String resolution = EPLogUtil + .formatMessage(epMessageEnum.getDetails() + " " + epMessageEnum.getResolution(), (Object[]) param); + if (errorSeverityEnum == ErrorSeverityEnum.WARN) { + errorLogger.warn(resolution); + } else if (errorSeverityEnum == ErrorSeverityEnum.INFO) { + errorLogger.info(resolution); + } else { + errorLogger.error(resolution); + } + } catch (Exception e) { + errorLogger.error("Failed to log the error code. Details: " + UserUtils.getStackTrace(e)); + } finally { + MDC.remove("ErrorCode"); + MDC.remove("ErrorDescription"); + MDC.remove("ClassName"); + MDC.remove(MDC_ALERT_SEVERITY); + } + } + + /** + * Formats and writes a message to the error log with the class name, + * throwable and the specified parameters, using log level info, warn or + * error appropriate for the specified severity + * + * @param classLogger + * Logger for the class where the error occurred; the logger + * carries the class name. + * @param epMessageEnum + * Enum carrying alarm and error severity + * @param th + * Throwable; ignored if null + * @param param + * Array of Strings used to build the message. + */ + @SuppressWarnings("static-access") + public static void logEcompError(EELFLoggerDelegate classLogger, EPAppMessagesEnum epMessageEnum, Throwable th, + String... param) { + + AlarmSeverityEnum alarmSeverityEnum = epMessageEnum.getAlarmSeverity(); + ErrorSeverityEnum errorSeverityEnum = epMessageEnum.getErrorSeverity(); + + MDC.put(MDC_ALERT_SEVERITY, alarmSeverityEnum.name()); + MDC.put("ErrorCode", epMessageEnum.getErrorCode()); + MDC.put("ErrorDescription", epMessageEnum.getErrorDescription()); + + final String message = EPLogUtil.formatMessage(epMessageEnum.getDetails() + " " + epMessageEnum.getResolution(), + (Object[]) param); + if (errorSeverityEnum == ErrorSeverityEnum.INFO) { + if (th == null) + classLogger.info(classLogger.errorLogger, message); + else + classLogger.info(classLogger.errorLogger, message, th); + } else if (errorSeverityEnum == ErrorSeverityEnum.WARN) { + if (th == null) + classLogger.warn(classLogger.errorLogger, message); + else + classLogger.warn(classLogger.errorLogger, message, th); + } else { + if (th == null) + classLogger.error(classLogger.errorLogger, message); + else + classLogger.error(classLogger.errorLogger, message, th); + } + + // Clean up + MDC.remove(MDC_ALERT_SEVERITY); + MDC.remove("ErrorCode"); + MDC.remove("ErrorDescription"); + } + + /** + * Builds a string using the format and parameters. + * + * @param message + * @param args + * @return + */ + private static String formatMessage(String message, Object... args) { + StringBuilder sbFormattedMessage = new StringBuilder(); + if (args != null && args.length > 0 && message != null && message != "") { + MessageFormat mf = new MessageFormat(message); + sbFormattedMessage.append(mf.format(args)); + } else { + sbFormattedMessage.append(message); + } + return sbFormattedMessage.toString(); + } + + /** + * Builds a comma-separated string of values to document a user action. + * + * @param action + * String + * @param activity + * String + * @param userId + * String + * @param affectedId + * String + * @param comment + * String + * @return Value suitable for writing to the audit log file. + */ + public static String formatAuditLogMessage(String action, String activity, String userId, String affectedId, + String comment) { + StringBuilder auditLogMsg = new StringBuilder(); + auditLogMsg.append("Click_A:["); + if (action != null && !action.equals("")) { + auditLogMsg.append(" Action: "); + auditLogMsg.append(action); + } + + if (activity != null && !activity.equals("")) { + auditLogMsg.append(",Activity CD: "); + auditLogMsg.append(activity); + } + + if (userId != null && !userId.equals("")) { + auditLogMsg.append(",User ID: "); + auditLogMsg.append(userId); + } + + if (affectedId != null && !affectedId.equals("")) { + auditLogMsg.append(",Affected ID: "); + auditLogMsg.append(affectedId); + } + + if (comment != null && !comment.equals("")) { + auditLogMsg.append(",Comment: "); + auditLogMsg.append(comment); + } + auditLogMsg.append("]"); + return auditLogMsg.toString(); + } + + /** + * Builds a comma-separated string of values to document a user browser + * action. + * + * @param orgUserId + * String + * @param appName + * String + * @param action + * String + * @param activity + * String + * @param actionLink + * String + * @param page + * String + * @param function + * String + * @param type + * String + * @return String value suitable for writing to the audit log file. + */ + public static String formatStoreAnalyticsAuditLogMessage(String orgUserId, String appName, String action, + String activity, String actionLink, String page, String function, String type) { + StringBuilder auditLogStoreAnalyticsMsg = new StringBuilder(); + auditLogStoreAnalyticsMsg.append("Click_Analytics:["); + if (orgUserId != null && !orgUserId.equals("")) { + auditLogStoreAnalyticsMsg.append(" Organization User ID: "); + auditLogStoreAnalyticsMsg.append(orgUserId); + } + + if (appName != null && !appName.equals("")) { + auditLogStoreAnalyticsMsg.append(",AppName: "); + auditLogStoreAnalyticsMsg.append(appName); + } + + if (action != null && !action.equals("")) { + auditLogStoreAnalyticsMsg.append(",Action: "); + auditLogStoreAnalyticsMsg.append(action); + } + + if (activity != null && !activity.equals("")) { + auditLogStoreAnalyticsMsg.append(",Activity: "); + auditLogStoreAnalyticsMsg.append(activity); + } + + if (actionLink != null && !actionLink.equals("")) { + auditLogStoreAnalyticsMsg.append(",ActionLink: "); + auditLogStoreAnalyticsMsg.append(actionLink); + } + + if (page != null && !page.equals("")) { + auditLogStoreAnalyticsMsg.append(",Page: "); + auditLogStoreAnalyticsMsg.append(page); + } + + if (function != null && !function.equals("")) { + auditLogStoreAnalyticsMsg.append(",Function: "); + auditLogStoreAnalyticsMsg.append(function); + } + + if (type != null && !type.equals("")) { + auditLogStoreAnalyticsMsg.append(",Type: "); + auditLogStoreAnalyticsMsg.append(type); + } + auditLogStoreAnalyticsMsg.append("]"); + return auditLogStoreAnalyticsMsg.toString(); + } + +}