From 2d211f3e1943ded3a0ab59553b12bee602079398 Mon Sep 17 00:00:00 2001 From: "Arul.Nambi" Date: Thu, 14 Sep 2017 15:30:00 -0400 Subject: Renaming openecomp to onap Issue-ID: AAI-208 Change-Id: I11d428593971c665f0ebdf56465d87161ef7d112 Signed-off-by: Arul.Nambi --- .../main/java/org/onap/aai/cl/api/LogFields.java | 86 ++++++++ .../src/main/java/org/onap/aai/cl/api/LogLine.java | 116 +++++++++++ .../src/main/java/org/onap/aai/cl/api/Logger.java | 218 +++++++++++++++++++++ .../onap/aai/cl/api/LoggerFactoryInterface.java | 45 +++++ .../main/java/org/onap/aai/cl/mdc/MdcContext.java | 80 ++++++++ .../main/java/org/onap/aai/cl/mdc/MdcOverride.java | 46 +++++ .../main/java/org/openecomp/cl/api/LogFields.java | 86 -------- .../main/java/org/openecomp/cl/api/LogLine.java | 117 ----------- .../src/main/java/org/openecomp/cl/api/Logger.java | 218 --------------------- .../openecomp/cl/api/LoggerFactoryInterface.java | 45 ----- .../main/java/org/openecomp/cl/mdc/MdcContext.java | 80 -------- .../java/org/openecomp/cl/mdc/MdcOverride.java | 46 ----- 12 files changed, 591 insertions(+), 592 deletions(-) create mode 100644 logging-api/src/main/java/org/onap/aai/cl/api/LogFields.java create mode 100644 logging-api/src/main/java/org/onap/aai/cl/api/LogLine.java create mode 100644 logging-api/src/main/java/org/onap/aai/cl/api/Logger.java create mode 100644 logging-api/src/main/java/org/onap/aai/cl/api/LoggerFactoryInterface.java create mode 100644 logging-api/src/main/java/org/onap/aai/cl/mdc/MdcContext.java create mode 100644 logging-api/src/main/java/org/onap/aai/cl/mdc/MdcOverride.java delete mode 100644 logging-api/src/main/java/org/openecomp/cl/api/LogFields.java delete mode 100644 logging-api/src/main/java/org/openecomp/cl/api/LogLine.java delete mode 100644 logging-api/src/main/java/org/openecomp/cl/api/Logger.java delete mode 100644 logging-api/src/main/java/org/openecomp/cl/api/LoggerFactoryInterface.java delete mode 100644 logging-api/src/main/java/org/openecomp/cl/mdc/MdcContext.java delete mode 100644 logging-api/src/main/java/org/openecomp/cl/mdc/MdcOverride.java (limited to 'logging-api/src/main/java') diff --git a/logging-api/src/main/java/org/onap/aai/cl/api/LogFields.java b/logging-api/src/main/java/org/onap/aai/cl/api/LogFields.java new file mode 100644 index 0000000..80a4507 --- /dev/null +++ b/logging-api/src/main/java/org/onap/aai/cl/api/LogFields.java @@ -0,0 +1,86 @@ +/** + * ============LICENSE_START======================================================= + * org.onap.aai + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * Copyright © 2017 Amdocs + * ================================================================================ + * 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========================================================= + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + */ +package org.onap.aai.cl.api; + +import java.util.HashMap; +import java.util.Map; + +public class LogFields { + + /** Map of field names to values. */ + private Map fields = new HashMap(); + + /** + * Retrieve the contents of the specified field entry. + * + * @param field + * - The field to retrieve the value for. + * + * @return - The value associated with the specified field, or null if there + * is no such entry. + */ + public String getField(Enum field) { + return fields.get(field.ordinal()); + } + + /** + * Assigns a value to a specific field. + * + * @param field + * - The field to assign a value to. + * @param value + * - The value to assign to the field. + * + * @return - The {@link LogFields} object (this is useful for parameter + * chaining. + */ + public LogFields setField(Enum field, String value) { + fields.put(field.ordinal(), value); + return this; + } + + /** + * Assigns a value to a specific field. + * + * @param field - The field to assign a value to. + * @param value - The value to assign to the field. + * + * @return - The {@link LogFields} object (this is useful for parameter + * chaining. + */ + public LogFields setField(Enum field, int value) { + fields.put(field.ordinal(), String.valueOf(value)); + return this; + } + + /** + * Determines whether or not a value has been assigned to a particular field. + * + * @param field - The field to be checked. + * + * @return - true if an entry exists for the specified field, false otherwise. + */ + public boolean fieldIsSet(Enum field) { + return fields.containsKey(field.ordinal()) && (fields.get(field.ordinal()) != null); + } +} diff --git a/logging-api/src/main/java/org/onap/aai/cl/api/LogLine.java b/logging-api/src/main/java/org/onap/aai/cl/api/LogLine.java new file mode 100644 index 0000000..eb6dcc8 --- /dev/null +++ b/logging-api/src/main/java/org/onap/aai/cl/api/LogLine.java @@ -0,0 +1,116 @@ +/** + * ============LICENSE_START======================================================= + * org.onap.aai + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * Copyright © 2017 Amdocs + * ================================================================================ + * 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========================================================= + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + */ +package org.onap.aai.cl.api; + +import org.onap.aai.cl.mdc.MdcContext; +import org.onap.aai.cl.mdc.MdcOverride; +import org.slf4j.MDC; + +/** + * This class is used to help standardize how log lines are written and provide + * profiling info. + */ +public abstract class LogLine { + + public static enum LogLineType { + AUDIT, ERROR, METRICS + } + + /** + * Enumerates the predefined fields of the log line. Note that this + * enumeration only exposes those fields that the client may set via the + * {@link LogFields} object. Fields which are automatically populated by the + * logging service or sourced from the {@link MdcContext} do not appear here. + */ + public enum DefinedFields { + + STATUS_CODE, + RESPONSE_CODE, + RESPONSE_DESCRIPTION, + INSTANCE_UUID, + SEVERITY, + SERVER_IP, + CLIENT_IP, + CLASS_NAME, + PROCESS_KEY, + TARGET_SVC_NAME, + TARGET_ENTITY, + ERROR_CODE, + ERROR_DESCRIPTION, + CUSTOM_1, + CUSTOM_2, + CUSTOM_3, + CUSTOM_4; + } + + protected String component = ""; + protected String logCode = ""; + protected String level = ""; + protected String message = ""; + protected MdcOverride override = new MdcOverride(); + protected LogFields fields = new LogFields(); + + /** + * Sets common values that the log line will use for populating the log + * string. + * + * @param component + * - The entity invoking the log. + * @param logCode + * - String version of the log message code. + * @param level + * - Log level (DEBUG, TRACE, INFO, WARN, ERROR...) + * @param msg + * - The log message + * @param fields + * - A map of predefined log line fields to values. + * @param override + * - Structure which overrides selective fields in the + * {@link MdcContext} + */ + public void init(String component, String logCode, String level, String msg, LogFields fields, + MdcOverride override) { + + this.component = component; + this.logCode = logCode; + this.level = level; + this.message = msg; + this.override = override; + this.fields = fields; + } + + protected String getMdcValue(String attribute) { + if (override.hasOverride(attribute)) { + return override.getAttributeValue(attribute); + } + + String value = (String) MDC.get(attribute) == null ? "" : (String) MDC.get(attribute); + return value; + } + + public abstract String getFormattedLine(); + + protected String fieldValue(Enum field) { + return (fields.fieldIsSet(field) ? fields.getField(field) : ""); + } +} diff --git a/logging-api/src/main/java/org/onap/aai/cl/api/Logger.java b/logging-api/src/main/java/org/onap/aai/cl/api/Logger.java new file mode 100644 index 0000000..df38692 --- /dev/null +++ b/logging-api/src/main/java/org/onap/aai/cl/api/Logger.java @@ -0,0 +1,218 @@ +/** + * ============LICENSE_START======================================================= + * org.onap.aai + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * Copyright © 2017 Amdocs + * ================================================================================ + * 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========================================================= + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + */ +package org.onap.aai.cl.api; + +import org.onap.aai.cl.mdc.MdcOverride; + +/** Defines the common API which all Logger implementations must expose. */ +public interface Logger { + + /** + * Indicate whether or not TRACE level logging is enabled. + * + * @return true if TRACE level logs are enabled, false otherwise + */ + public boolean isTraceEnabled(); + + /** + * Indicate whether or not INFO level logging is enabled. + * + * @return true if INFO level logs are enabled, false otherwise + */ + public boolean isInfoEnabled(); + + /** + * Indicate whether or not ERROR level logging is enabled. + * + * @return true if ERROR level logs are enabled, false otherwise + */ + public boolean isErrorEnabled(); + + /** + * Indicate whether or not WARNING level logging is enabled. + * + * @return true if WARNING level logs are enabled, false otherwise + */ + public boolean isWarnEnabled(); + + /** + * Indicate whether or not DEBUG level logging is enabled. + * + * @return true if DEBUG level logs are enabled, false otherwise + */ + public boolean isDebugEnabled(); + + /** + * Log an INFO message based on a message key defined in a resource bundle + * with arguments. + * + * @param logCode + * - Log message identifier. + * @param arguments + * - Arguments to populate the log message template with. + */ + public void info(Enum logCode, String... arguments); + + /** + * Log an INFO message based on a message key defined in a resource bundle + * with arguments. + * + * @param logCode + * - Log message identifier. + * @param fields + * - Map containing values for any log fields which the client wants + * to populate. + * @param arguments + * - Arguments to populate the log message template with. + */ + public void info(Enum logCode, LogFields fields, String... arguments); + + /** + * Log an INFO message based on a message key defined in a resource bundle + * with arguments. + * + * @param logCode - Log message identifier. + * @param fields - Map containing values for any log fields which the + * client wants to populate. + * @param override - A set of values to override values stored in the MDC context + * @param arguments - Arguments to populate the log message template with. + */ + public void info(Enum logCode, LogFields fields, MdcOverride override, String... arguments); + + /** + * Log a WARNING message based on a message key defined in a resource bundle + * with arguments. + * + * @param logCode - Log message identifier. + * @param arguments - Arguments to populate the log message template with. + */ + public void warn(Enum logCode, String... arguments); + + /** + * Log a WARNING message based on a message key defined in a resource bundle + * with arguments. + * + * @param logCode - Log message identifier. + * @param fields - Map containing values for any log fields which the + * client wants to populate. + * @param arguments - Arguments to populate the log message template with. + */ + public void warn(Enum logCode, LogFields fields, String... arguments); + + /** + * Log a TRACE message based on a message key defined in a resource bundle + * with arguments. + * + * @param logCode - Log message identifier. + * @param arguments - Arguments to populate the log message template with. + */ + public void trace(Enum logCode, String... arguments); + + /** + * Log a TRACE message based on a message key defined in a resource bundle + * with arguments. + * + * @param logCode - Log message identifier. + * @param fields - Map containing values for any log fields which the + * client wants to populate. + * @param arguments - Arguments to populate the log message template with. + */ + public void trace(Enum logCode, LogFields fields, String... arguments); + + /** + * Log a simple, non-templated DEBUG message. + * + * @param logMessage - The message to be logged. + */ + public void debug(String logMessage); + + /** + * Log a DEBUG message based on a message key defined in a resource bundle + * with arguments. + * + * @param logCode - Log message identifier. + * @param arguments - Arguments to populate the log message template with. + */ + public void debug(Enum logCode, String... arguments); + + /** + * Log a DEBUG message based on a message key defined in a resource bundle + * with arguments. + * + * @param logCode - Log message identifier. + * @param fields - Map containing values for any log fields which the + * client wants to populate. + * @param arguments - Arguments to populate the log message template with. + */ + public void debug(Enum logCode, LogFields fields, String... arguments); + + /** + * Log an ERROR message based on a message key defined in a resource bundle + * with arguments. + * + * @param logCode - Log message identifier. + * @param arguments - Arguments to populate the log message template with. + */ + public void error(Enum logCode, String... arguments); + + /** + * Log an ERROR message based on a message key defined in a resource bundle + * with arguments. + * + * @param logCode - Log message identifier. + * @param fields - Map containing values for any log fields which the + * client wants to populate. + * @param arguments - Arguments to populate the log message template with. + */ + public void error(Enum logCode, LogFields fields, String... arguments); + + /** + * Log an ERROR message based on a message key defined in a resource bundle + * with arguments and a throwable exception. + * + * @param logCode - Log message identifier. + * @param ex - The exception to be logged. + * @param arguments - Arguments to populate the log message template with. + */ + public void error(Enum logCode, Throwable ex, String... arguments); + + /** + * Log an ERROR message based on a message key defined in a resource bundle + * with arguments and a throwable exception. + * + * @param logCode - Log message identifier. + * @param fields - Map containing values for any log fields which the + * client wants to populate. + * @param ex - The exception to be logged. + * @param arguments - Arguments to populate the log message template with. + */ + public void error(Enum logCode, LogFields fields, Throwable ex, String... arguments); + + /** + * Format the given log using the supplied arguments + * @param logCode - Log message identifier. + * @param arguments - Arguments to populate the log message template with. + */ + public String formatMsg(Enum logCode, String... arguments); + +} diff --git a/logging-api/src/main/java/org/onap/aai/cl/api/LoggerFactoryInterface.java b/logging-api/src/main/java/org/onap/aai/cl/api/LoggerFactoryInterface.java new file mode 100644 index 0000000..4fcf642 --- /dev/null +++ b/logging-api/src/main/java/org/onap/aai/cl/api/LoggerFactoryInterface.java @@ -0,0 +1,45 @@ +/** + * ============LICENSE_START======================================================= + * org.onap.aai + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * Copyright © 2017 Amdocs + * ================================================================================ + * 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========================================================= + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + */ +package org.onap.aai.cl.api; + +/** + * Defines the common API that must be exposed by all LoggerFactory + * implementations. + */ +public interface LoggerFactoryInterface { + + /** + * Returns the logger associated with the name. + * + * @return Logger + */ + public Logger getLogger(String name); + + /** + * Returns the logger associated with the clazz. + * + * @return Logger + */ + public Logger getLogger(Class clazz); + +} diff --git a/logging-api/src/main/java/org/onap/aai/cl/mdc/MdcContext.java b/logging-api/src/main/java/org/onap/aai/cl/mdc/MdcContext.java new file mode 100644 index 0000000..11cacd9 --- /dev/null +++ b/logging-api/src/main/java/org/onap/aai/cl/mdc/MdcContext.java @@ -0,0 +1,80 @@ +/** + * ============LICENSE_START======================================================= + * org.onap.aai + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * Copyright © 2017 Amdocs + * ================================================================================ + * 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========================================================= + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + */ +package org.onap.aai.cl.mdc; + +import org.slf4j.MDC; + +import java.net.InetAddress; +import java.text.SimpleDateFormat; +import java.util.Date; + +/** + * This class manages the MDC (mapped diagnostic context). Calling the init + * method when a new event is processed will save thread-specific context + * information which will be used when generating logs. + */ +public final class MdcContext { + public static String MDC_REQUEST_ID = "RequestId"; + public static String MDC_SERVER_FQDN = "ServerFQDN"; + public static String MDC_SERVICE_NAME = "ServiceName"; + public static String MDC_PARTNER_NAME = "PartnerName"; + public static String MDC_START_TIME = "StartTime"; + public static String MDC_REMOTE_HOST = "RemoteHost"; + public static String MDC_SERVICE_INSTANCE_ID = "ServiceInstanceId"; + public static String MDC_CLIENT_ADDRESS = "ClientAddress"; + + /** + * Initializes the fields of the Mapped Diagnostic Context. + * + * @param transId - Unique transaction identifier. + * @param serviceName - The name of the service generating the diagnostic. + * @param serviceInstance - Unique identifier of the specific instance + * generating the diagnostic. + * @param partnerName - Name of the entity initiating the transction to + * be logged + * @param clientAddress - IP address of the transaction client. + */ + public static void initialize(String transId, + String serviceName, + String serviceInstance, + String partnerName, + String clientAddress) { + MDC.clear(); + MDC.put(MDC_REQUEST_ID, transId); + MDC.put(MDC_SERVICE_NAME, serviceName); + MDC.put(MDC_SERVICE_INSTANCE_ID, serviceInstance); + MDC.put(MDC_PARTNER_NAME, partnerName); + MDC.put(MDC_CLIENT_ADDRESS, clientAddress); + MDC.put(MDC_START_TIME, + new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX").format(new Date())); + + try { + MDC.put(MDC_SERVER_FQDN, InetAddress.getLocalHost().getCanonicalHostName()); + } catch (Exception e) { + // If, for some reason we are unable to get the canonical host name, we + // just want to leave the field unpopulated. There is not much value + // in doing anything else with an exception at this point. + } + + } +} diff --git a/logging-api/src/main/java/org/onap/aai/cl/mdc/MdcOverride.java b/logging-api/src/main/java/org/onap/aai/cl/mdc/MdcOverride.java new file mode 100644 index 0000000..1456217 --- /dev/null +++ b/logging-api/src/main/java/org/onap/aai/cl/mdc/MdcOverride.java @@ -0,0 +1,46 @@ +/** + * ============LICENSE_START======================================================= + * org.onap.aai + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * Copyright © 2017 Amdocs + * ================================================================================ + * 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========================================================= + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + */ +package org.onap.aai.cl.mdc; + +import java.util.HashMap; +import java.util.Map; + +/** + * This class stores a map of MDC context attribute/values which can be used to + * override the actual MDC context. + */ +public class MdcOverride { + private Map overrides = new HashMap(); + + public void addAttribute(String attr, String val) { + overrides.put(attr, val); + } + + public String getAttributeValue(String attr) { + return overrides.get(attr); + } + + public boolean hasOverride(String attr) { + return overrides.containsKey(attr); + } +} diff --git a/logging-api/src/main/java/org/openecomp/cl/api/LogFields.java b/logging-api/src/main/java/org/openecomp/cl/api/LogFields.java deleted file mode 100644 index 677aa2c..0000000 --- a/logging-api/src/main/java/org/openecomp/cl/api/LogFields.java +++ /dev/null @@ -1,86 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017 AT&T Intellectual Property. All rights reserved. - * Copyright © 2017 Amdocs - * ================================================================================ - * 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========================================================= - * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. - */ -package org.openecomp.cl.api; - -import java.util.HashMap; -import java.util.Map; - -public class LogFields { - - /** Map of field names to values. */ - private Map fields = new HashMap(); - - /** - * Retrieve the contents of the specified field entry. - * - * @param field - * - The field to retrieve the value for. - * - * @return - The value associated with the specified field, or null if there - * is no such entry. - */ - public String getField(Enum field) { - return fields.get(field.ordinal()); - } - - /** - * Assigns a value to a specific field. - * - * @param field - * - The field to assign a value to. - * @param value - * - The value to assign to the field. - * - * @return - The {@link LogFields} object (this is useful for parameter - * chaining. - */ - public LogFields setField(Enum field, String value) { - fields.put(field.ordinal(), value); - return this; - } - - /** - * Assigns a value to a specific field. - * - * @param field - The field to assign a value to. - * @param value - The value to assign to the field. - * - * @return - The {@link LogFields} object (this is useful for parameter - * chaining. - */ - public LogFields setField(Enum field, int value) { - fields.put(field.ordinal(), String.valueOf(value)); - return this; - } - - /** - * Determines whether or not a value has been assigned to a particular field. - * - * @param field - The field to be checked. - * - * @return - true if an entry exists for the specified field, false otherwise. - */ - public boolean fieldIsSet(Enum field) { - return fields.containsKey(field.ordinal()) && (fields.get(field.ordinal()) != null); - } -} diff --git a/logging-api/src/main/java/org/openecomp/cl/api/LogLine.java b/logging-api/src/main/java/org/openecomp/cl/api/LogLine.java deleted file mode 100644 index f63d421..0000000 --- a/logging-api/src/main/java/org/openecomp/cl/api/LogLine.java +++ /dev/null @@ -1,117 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017 AT&T Intellectual Property. All rights reserved. - * Copyright © 2017 Amdocs - * ================================================================================ - * 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========================================================= - * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. - */ -package org.openecomp.cl.api; - -import org.openecomp.cl.mdc.MdcContext; -import org.openecomp.cl.mdc.MdcOverride; - -import org.slf4j.MDC; - -/** - * This class is used to help standardize how log lines are written and provide - * profiling info. - */ -public abstract class LogLine { - - public static enum LogLineType { - AUDIT, ERROR, METRICS - } - - /** - * Enumerates the predefined fields of the log line. Note that this - * enumeration only exposes those fields that the client may set via the - * {@link LogFields} object. Fields which are automatically populated by the - * logging service or sourced from the {@link MdcContext} do not appear here. - */ - public enum DefinedFields { - - STATUS_CODE, - RESPONSE_CODE, - RESPONSE_DESCRIPTION, - INSTANCE_UUID, - SEVERITY, - SERVER_IP, - CLIENT_IP, - CLASS_NAME, - PROCESS_KEY, - TARGET_SVC_NAME, - TARGET_ENTITY, - ERROR_CODE, - ERROR_DESCRIPTION, - CUSTOM_1, - CUSTOM_2, - CUSTOM_3, - CUSTOM_4; - } - - protected String component = ""; - protected String logCode = ""; - protected String level = ""; - protected String message = ""; - protected MdcOverride override = new MdcOverride(); - protected LogFields fields = new LogFields(); - - /** - * Sets common values that the log line will use for populating the log - * string. - * - * @param component - * - The entity invoking the log. - * @param logCode - * - String version of the log message code. - * @param level - * - Log level (DEBUG, TRACE, INFO, WARN, ERROR...) - * @param msg - * - The log message - * @param fields - * - A map of predefined log line fields to values. - * @param override - * - Structure which overrides selective fields in the - * {@link MdcContext} - */ - public void init(String component, String logCode, String level, String msg, LogFields fields, - MdcOverride override) { - - this.component = component; - this.logCode = logCode; - this.level = level; - this.message = msg; - this.override = override; - this.fields = fields; - } - - protected String getMdcValue(String attribute) { - if (override.hasOverride(attribute)) { - return override.getAttributeValue(attribute); - } - - String value = (String) MDC.get(attribute) == null ? "" : (String) MDC.get(attribute); - return value; - } - - public abstract String getFormattedLine(); - - protected String fieldValue(Enum field) { - return (fields.fieldIsSet(field) ? fields.getField(field) : ""); - } -} diff --git a/logging-api/src/main/java/org/openecomp/cl/api/Logger.java b/logging-api/src/main/java/org/openecomp/cl/api/Logger.java deleted file mode 100644 index 50efe49..0000000 --- a/logging-api/src/main/java/org/openecomp/cl/api/Logger.java +++ /dev/null @@ -1,218 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017 AT&T Intellectual Property. All rights reserved. - * Copyright © 2017 Amdocs - * ================================================================================ - * 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========================================================= - * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. - */ -package org.openecomp.cl.api; - -import org.openecomp.cl.mdc.MdcOverride; - -/** Defines the common API which all Logger implementations must expose. */ -public interface Logger { - - /** - * Indicate whether or not TRACE level logging is enabled. - * - * @return true if TRACE level logs are enabled, false otherwise - */ - public boolean isTraceEnabled(); - - /** - * Indicate whether or not INFO level logging is enabled. - * - * @return true if INFO level logs are enabled, false otherwise - */ - public boolean isInfoEnabled(); - - /** - * Indicate whether or not ERROR level logging is enabled. - * - * @return true if ERROR level logs are enabled, false otherwise - */ - public boolean isErrorEnabled(); - - /** - * Indicate whether or not WARNING level logging is enabled. - * - * @return true if WARNING level logs are enabled, false otherwise - */ - public boolean isWarnEnabled(); - - /** - * Indicate whether or not DEBUG level logging is enabled. - * - * @return true if DEBUG level logs are enabled, false otherwise - */ - public boolean isDebugEnabled(); - - /** - * Log an INFO message based on a message key defined in a resource bundle - * with arguments. - * - * @param logCode - * - Log message identifier. - * @param arguments - * - Arguments to populate the log message template with. - */ - public void info(Enum logCode, String... arguments); - - /** - * Log an INFO message based on a message key defined in a resource bundle - * with arguments. - * - * @param logCode - * - Log message identifier. - * @param fields - * - Map containing values for any log fields which the client wants - * to populate. - * @param arguments - * - Arguments to populate the log message template with. - */ - public void info(Enum logCode, LogFields fields, String... arguments); - - /** - * Log an INFO message based on a message key defined in a resource bundle - * with arguments. - * - * @param logCode - Log message identifier. - * @param fields - Map containing values for any log fields which the - * client wants to populate. - * @param override - A set of values to override values stored in the MDC context - * @param arguments - Arguments to populate the log message template with. - */ - public void info(Enum logCode, LogFields fields, MdcOverride override, String... arguments); - - /** - * Log a WARNING message based on a message key defined in a resource bundle - * with arguments. - * - * @param logCode - Log message identifier. - * @param arguments - Arguments to populate the log message template with. - */ - public void warn(Enum logCode, String... arguments); - - /** - * Log a WARNING message based on a message key defined in a resource bundle - * with arguments. - * - * @param logCode - Log message identifier. - * @param fields - Map containing values for any log fields which the - * client wants to populate. - * @param arguments - Arguments to populate the log message template with. - */ - public void warn(Enum logCode, LogFields fields, String... arguments); - - /** - * Log a TRACE message based on a message key defined in a resource bundle - * with arguments. - * - * @param logCode - Log message identifier. - * @param arguments - Arguments to populate the log message template with. - */ - public void trace(Enum logCode, String... arguments); - - /** - * Log a TRACE message based on a message key defined in a resource bundle - * with arguments. - * - * @param logCode - Log message identifier. - * @param fields - Map containing values for any log fields which the - * client wants to populate. - * @param arguments - Arguments to populate the log message template with. - */ - public void trace(Enum logCode, LogFields fields, String... arguments); - - /** - * Log a simple, non-templated DEBUG message. - * - * @param logMessage - The message to be logged. - */ - public void debug(String logMessage); - - /** - * Log a DEBUG message based on a message key defined in a resource bundle - * with arguments. - * - * @param logCode - Log message identifier. - * @param arguments - Arguments to populate the log message template with. - */ - public void debug(Enum logCode, String... arguments); - - /** - * Log a DEBUG message based on a message key defined in a resource bundle - * with arguments. - * - * @param logCode - Log message identifier. - * @param fields - Map containing values for any log fields which the - * client wants to populate. - * @param arguments - Arguments to populate the log message template with. - */ - public void debug(Enum logCode, LogFields fields, String... arguments); - - /** - * Log an ERROR message based on a message key defined in a resource bundle - * with arguments. - * - * @param logCode - Log message identifier. - * @param arguments - Arguments to populate the log message template with. - */ - public void error(Enum logCode, String... arguments); - - /** - * Log an ERROR message based on a message key defined in a resource bundle - * with arguments. - * - * @param logCode - Log message identifier. - * @param fields - Map containing values for any log fields which the - * client wants to populate. - * @param arguments - Arguments to populate the log message template with. - */ - public void error(Enum logCode, LogFields fields, String... arguments); - - /** - * Log an ERROR message based on a message key defined in a resource bundle - * with arguments and a throwable exception. - * - * @param logCode - Log message identifier. - * @param ex - The exception to be logged. - * @param arguments - Arguments to populate the log message template with. - */ - public void error(Enum logCode, Throwable ex, String... arguments); - - /** - * Log an ERROR message based on a message key defined in a resource bundle - * with arguments and a throwable exception. - * - * @param logCode - Log message identifier. - * @param fields - Map containing values for any log fields which the - * client wants to populate. - * @param ex - The exception to be logged. - * @param arguments - Arguments to populate the log message template with. - */ - public void error(Enum logCode, LogFields fields, Throwable ex, String... arguments); - - /** - * Format the given log using the supplied arguments - * @param logCode - Log message identifier. - * @param arguments - Arguments to populate the log message template with. - */ - public String formatMsg(Enum logCode, String... arguments); - -} diff --git a/logging-api/src/main/java/org/openecomp/cl/api/LoggerFactoryInterface.java b/logging-api/src/main/java/org/openecomp/cl/api/LoggerFactoryInterface.java deleted file mode 100644 index 502aa19..0000000 --- a/logging-api/src/main/java/org/openecomp/cl/api/LoggerFactoryInterface.java +++ /dev/null @@ -1,45 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017 AT&T Intellectual Property. All rights reserved. - * Copyright © 2017 Amdocs - * ================================================================================ - * 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========================================================= - * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. - */ -package org.openecomp.cl.api; - -/** - * Defines the common API that must be exposed by all LoggerFactory - * implementations. - */ -public interface LoggerFactoryInterface { - - /** - * Returns the logger associated with the name. - * - * @return Logger - */ - public Logger getLogger(String name); - - /** - * Returns the logger associated with the clazz. - * - * @return Logger - */ - public Logger getLogger(Class clazz); - -} diff --git a/logging-api/src/main/java/org/openecomp/cl/mdc/MdcContext.java b/logging-api/src/main/java/org/openecomp/cl/mdc/MdcContext.java deleted file mode 100644 index 285ca9b..0000000 --- a/logging-api/src/main/java/org/openecomp/cl/mdc/MdcContext.java +++ /dev/null @@ -1,80 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017 AT&T Intellectual Property. All rights reserved. - * Copyright © 2017 Amdocs - * ================================================================================ - * 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========================================================= - * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. - */ -package org.openecomp.cl.mdc; - -import org.slf4j.MDC; - -import java.net.InetAddress; -import java.text.SimpleDateFormat; -import java.util.Date; - -/** - * This class manages the MDC (mapped diagnostic context). Calling the init - * method when a new event is processed will save thread-specific context - * information which will be used when generating logs. - */ -public final class MdcContext { - public static String MDC_REQUEST_ID = "RequestId"; - public static String MDC_SERVER_FQDN = "ServerFQDN"; - public static String MDC_SERVICE_NAME = "ServiceName"; - public static String MDC_PARTNER_NAME = "PartnerName"; - public static String MDC_START_TIME = "StartTime"; - public static String MDC_REMOTE_HOST = "RemoteHost"; - public static String MDC_SERVICE_INSTANCE_ID = "ServiceInstanceId"; - public static String MDC_CLIENT_ADDRESS = "ClientAddress"; - - /** - * Initializes the fields of the Mapped Diagnostic Context. - * - * @param transId - Unique transaction identifier. - * @param serviceName - The name of the service generating the diagnostic. - * @param serviceInstance - Unique identifier of the specific instance - * generating the diagnostic. - * @param partnerName - Name of the entity initiating the transction to - * be logged - * @param clientAddress - IP address of the transaction client. - */ - public static void initialize(String transId, - String serviceName, - String serviceInstance, - String partnerName, - String clientAddress) { - MDC.clear(); - MDC.put(MDC_REQUEST_ID, transId); - MDC.put(MDC_SERVICE_NAME, serviceName); - MDC.put(MDC_SERVICE_INSTANCE_ID, serviceInstance); - MDC.put(MDC_PARTNER_NAME, partnerName); - MDC.put(MDC_CLIENT_ADDRESS, clientAddress); - MDC.put(MDC_START_TIME, - new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX").format(new Date())); - - try { - MDC.put(MDC_SERVER_FQDN, InetAddress.getLocalHost().getCanonicalHostName()); - } catch (Exception e) { - // If, for some reason we are unable to get the canonical host name, we - // just want to leave the field unpopulated. There is not much value - // in doing anything else with an exception at this point. - } - - } -} diff --git a/logging-api/src/main/java/org/openecomp/cl/mdc/MdcOverride.java b/logging-api/src/main/java/org/openecomp/cl/mdc/MdcOverride.java deleted file mode 100644 index cc5e131..0000000 --- a/logging-api/src/main/java/org/openecomp/cl/mdc/MdcOverride.java +++ /dev/null @@ -1,46 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017 AT&T Intellectual Property. All rights reserved. - * Copyright © 2017 Amdocs - * ================================================================================ - * 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========================================================= - * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. - */ -package org.openecomp.cl.mdc; - -import java.util.HashMap; -import java.util.Map; - -/** - * This class stores a map of MDC context attribute/values which can be used to - * override the actual MDC context. - */ -public class MdcOverride { - private Map overrides = new HashMap(); - - public void addAttribute(String attr, String val) { - overrides.put(attr, val); - } - - public String getAttributeValue(String attr) { - return overrides.get(attr); - } - - public boolean hasOverride(String attr) { - return overrides.containsKey(attr); - } -} -- cgit 1.2.3-korg