[SDC-29] Amdocs OnBoard 1707 initial commit.
Change-Id: Ie4d12a3f574008b792899b368a0902a8b46b5370
Signed-off-by: AviZi <avi.ziv@amdocs.com>
diff --git a/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/pom.xml b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/pom.xml
new file mode 100644
index 0000000..e1e5c12
--- /dev/null
+++ b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/pom.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>openecomp-sdc-logging-api</artifactId>
+ <name>openecomp-sdc-logging-api</name>
+
+ <parent>
+ <groupId>org.openecomp.sdc</groupId>
+ <artifactId>openecomp-logging-lib</artifactId>
+ <version>1.1.0-SNAPSHOT</version>
+ </parent>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.aspectj</groupId>
+ <artifactId>aspectjrt</artifactId>
+ <version>${aspectj.version}</version>
+ </dependency>
+ </dependencies>
+
+ <!--dependencies>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-core</artifactId>
+ <version>${spring.framework.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-context</artifactId>
+ <version>${spring.framework.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-beans</artifactId>
+ <version>${spring.framework.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-beans</artifactId>
+ <version>${spring.framework.version}</version>
+ </dependency>
+ </dependencies-->
+
+
+</project>
diff --git a/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/pom.xml.versionsBackup b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/pom.xml.versionsBackup
new file mode 100644
index 0000000..a2786b2
--- /dev/null
+++ b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/pom.xml.versionsBackup
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <dependencies>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.aspectj</groupId>
+ <artifactId>aspectjrt</artifactId>
+ <version>1.8.9</version>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </dependency>
+ </dependencies>
+
+ <parent>
+ <groupId>org.openecomp.sdc</groupId>
+ <artifactId>openecomp-logging-lib</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ </parent>
+
+
+ <artifactId>openecomp-sdc-logging-api</artifactId>
+ <name>openecomp-sdc-logging-api</name>
+ <version>1.0-SNAPSHOT</version>
+
+ <!--dependencies>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-core</artifactId>
+ <version>4.1.3.RELEASE</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-context</artifactId>
+ <version>4.1.3.RELEASE</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-beans</artifactId>
+ <version>4.1.3.RELEASE</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-beans</artifactId>
+ <version>4.1.3.RELEASE</version>
+ </dependency>
+ </dependencies-->
+
+
+</project>
\ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/api/BaseFactory.java b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/api/BaseFactory.java
new file mode 100644
index 0000000..3be67df
--- /dev/null
+++ b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/api/BaseFactory.java
@@ -0,0 +1,58 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * SDC
+ * ================================================================================
+ * 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.sdc.logging.api;
+
+import java.util.Iterator;
+import java.util.ServiceLoader;
+
+/**
+ * Contains common functionality for factories used in the logging framework.
+ *
+ * <p>In order to use the factory, a particular (e.g. framework-specific) implementation of a service must be
+ * configured as described in
+ * <a href="http://docs.oracle.com/javase/8/docs/api/java/util/ServiceLoader.html">java.util.ServiceLoader</a>).</p>
+ *
+ * @author evitaliy
+ * @since 13/09/2016.
+ *
+ * @see ServiceLoader
+ */
+public class BaseFactory {
+
+ protected static <T> T locateService(Class<T> clazz) throws Exception {
+
+ T service;
+ ServiceLoader<T> loader = ServiceLoader.load(clazz);
+ Iterator<T> iterator = loader.iterator();
+ if (iterator.hasNext()) {
+
+ service = iterator.next();
+ if (iterator.hasNext()) {
+ System.err.println(String.format("Warning! Configured more than one implementation of %s",
+ clazz.getName()));
+ }
+
+ return service;
+ }
+
+ throw new IllegalArgumentException((String.format("No implementations configured for %s", clazz.getName())));
+ }
+}
diff --git a/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/api/Logger.java b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/api/Logger.java
new file mode 100644
index 0000000..9055e64
--- /dev/null
+++ b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/api/Logger.java
@@ -0,0 +1,107 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * SDC
+ * ================================================================================
+ * 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.sdc.logging.api;
+
+/**
+ * <p>This interface defines logging as specified by Open OPENECOMP logging requirements.</p>
+ *
+ * <p>Formatted messages must follow the <a href="http://www.slf4j.org/api/org/slf4j/helpers/MessageFormatter.html>SLF4J
+ * format</a>.</p>
+ *
+ * @author evitaliy
+ * @since 13/09/2016.
+ */
+public interface Logger {
+
+ String getName();
+
+ boolean isMetricsEnabled();
+
+ void metrics(String msg);
+
+ void metrics(String msg, Object arg);
+
+ void metrics(String msg, Object arg1, Object arg2);
+
+ void metrics(String msg, Object... arguments);
+
+ void metrics(String msg, Throwable t);
+
+ boolean isAuditEnabled();
+
+ void audit(String msg);
+
+ void audit(String msg, Object arg);
+
+ void audit(String msg, Object arg1, Object arg2);
+
+ void audit(String msg, Object... arguments);
+
+ void audit(String msg, Throwable t);
+
+ boolean isDebugEnabled();
+
+ void debug(String msg);
+
+ void debug(String msg, Object arg);
+
+ void debug(String msg, Object arg1, Object arg2);
+
+ void debug(String msg, Object... arguments);
+
+ void debug(String msg, Throwable t);
+
+ boolean isInfoEnabled();
+
+ void info(String msg);
+
+ void info(String msg, Object arg);
+
+ void info(String msg, Object arg1, Object arg2);
+
+ void info(String msg, Object... arguments);
+
+ void info(String msg, Throwable t);
+
+ boolean isWarnEnabled();
+
+ void warn(String msg);
+
+ void warn(String msg, Object arg);
+
+ void warn(String msg, Object... arguments);
+
+ void warn(String msg, Object arg1, Object arg2);
+
+ void warn(String msg, Throwable t);
+
+ boolean isErrorEnabled();
+
+ void error(String msg);
+
+ void error(String msg, Object arg);
+
+ void error(String msg, Object arg1, Object arg2);
+
+ void error(String msg, Object... arguments);
+
+ void error(String msg, Throwable t);
+}
diff --git a/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/api/LoggerCreationService.java b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/api/LoggerCreationService.java
new file mode 100644
index 0000000..fbad636
--- /dev/null
+++ b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/api/LoggerCreationService.java
@@ -0,0 +1,35 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * SDC
+ * ================================================================================
+ * 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.sdc.logging.api;
+
+/**
+ *
+ * Implements a framework-specific logging, to be used by {@link LoggerFactory}.
+ *
+ * @author evitaliy
+ * @since 13/09/2016.
+ */
+public interface LoggerCreationService {
+
+ Logger getLogger(String className);
+
+ Logger getLogger(Class<?> clazz);
+}
diff --git a/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/api/LoggerFactory.java b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/api/LoggerFactory.java
new file mode 100644
index 0000000..7029ded
--- /dev/null
+++ b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/api/LoggerFactory.java
@@ -0,0 +1,207 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * SDC
+ * ================================================================================
+ * 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.sdc.logging.api;
+
+
+/**
+ * <a>Factory to hide a concrete, framework-specific implementation of logger creation.</a>
+ *
+ * <p>The service used by this factory must implement {@link LoggerCreationService}. If no implementation has been
+ * configured or could not be instantiated, a <b>no-op logger</b> will be used, and <b>no events</b> will be logged.
+ * This is done to prevent recursion if attempts are being made to log exceptions that resulted from logger
+ * initialization.
+ * </p>
+ *
+ * @author evitaliy
+ * @since 13/09/2016.
+ *
+ * @see BaseFactory
+ * @see LoggerCreationService
+ */
+@SuppressWarnings("ThrowableInstanceNeverThrown")
+public class LoggerFactory extends BaseFactory {
+
+ private static final LoggerCreationService SERVICE;
+
+ static {
+ LoggerCreationService service;
+
+ try {
+ service = locateService(LoggerCreationService.class);
+ } catch (Throwable e) {
+ new RuntimeException("Failed to instantiate logger factory", e).printStackTrace();
+ // use the no-op service to prevent recursion in case of an attempt to log an exception as a
+ // result of a logger initialization error
+ service = new NoOpLoggerCreationService();
+ }
+
+ SERVICE = service;
+ }
+
+ public static Logger getLogger(String clazzName) {
+ return SERVICE.getLogger(clazzName);
+ }
+
+ public static Logger getLogger(Class<?> clazz) {
+ return SERVICE.getLogger(clazz);
+ }
+
+ private static class NoOpLoggerCreationService implements LoggerCreationService {
+
+ private static final Logger NO_OP_LOGGER = new Logger() {
+
+ @Override
+ public String getName() {
+ return "No-Op Logger";
+ }
+
+ @Override
+ public boolean isMetricsEnabled() {
+ return false;
+ }
+
+ @Override
+ public void metrics(String msg) { }
+
+ @Override
+ public void metrics(String msg, Object arg) { }
+
+ @Override
+ public void metrics(String msg, Object arg1, Object arg2) { }
+
+ @Override
+ public void metrics(String msg, Object... arguments) { }
+
+ @Override
+ public void metrics(String msg, Throwable t) { }
+
+ @Override
+ public boolean isAuditEnabled() {
+ return false;
+ }
+
+ @Override
+ public void audit(String msg) { }
+
+ @Override
+ public void audit(String msg, Object arg) { }
+
+ @Override
+ public void audit(String msg, Object arg1, Object arg2) { }
+
+ @Override
+ public void audit(String msg, Object... arguments) { }
+
+ @Override
+ public void audit(String msg, Throwable t) { }
+
+ @Override
+ public boolean isDebugEnabled() {
+ return false;
+ }
+
+ @Override
+ public void debug(String msg) { }
+
+ @Override
+ public void debug(String msg, Object arg) { }
+
+ @Override
+ public void debug(String msg, Object arg1, Object arg2) { }
+
+ @Override
+ public void debug(String msg, Object... arguments) { }
+
+ @Override
+ public void debug(String msg, Throwable t) { }
+
+ @Override
+ public boolean isInfoEnabled() {
+ return false;
+ }
+
+ @Override
+ public void info(String msg) { }
+
+ @Override
+ public void info(String msg, Object arg) { }
+
+ @Override
+ public void info(String msg, Object arg1, Object arg2) { }
+
+ @Override
+ public void info(String msg, Object... arguments) { }
+
+ @Override
+ public void info(String msg, Throwable t) { }
+
+ @Override
+ public boolean isWarnEnabled() {
+ return false;
+ }
+
+ @Override
+ public void warn(String msg) { }
+
+ @Override
+ public void warn(String msg, Object arg) { }
+
+ @Override
+ public void warn(String msg, Object... arguments) { }
+
+ @Override
+ public void warn(String msg, Object arg1, Object arg2) { }
+
+ @Override
+ public void warn(String msg, Throwable t) { }
+
+ @Override
+ public boolean isErrorEnabled() {
+ return false;
+ }
+
+ @Override
+ public void error(String msg) { }
+
+ @Override
+ public void error(String msg, Object arg) { }
+
+ @Override
+ public void error(String msg, Object arg1, Object arg2) { }
+
+ @Override
+ public void error(String msg, Object... arguments) { }
+
+ @Override
+ public void error(String msg, Throwable t) { }
+ };
+
+ @Override
+ public Logger getLogger(String className) {
+ return NO_OP_LOGGER;
+ }
+
+ @Override
+ public Logger getLogger(Class<?> clazz) {
+ return NO_OP_LOGGER;
+ }
+ }
+}
diff --git a/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/api/annotations/Debug.java b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/api/annotations/Debug.java
new file mode 100644
index 0000000..b00b85a
--- /dev/null
+++ b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/api/annotations/Debug.java
@@ -0,0 +1,34 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * SDC
+ * ================================================================================
+ * 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.sdc.logging.api.annotations;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Created by TALIO on 12/26/2016.
+ */
+
+public @interface Debug {
+
+}
diff --git a/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/api/annotations/Metrics.java b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/api/annotations/Metrics.java
new file mode 100644
index 0000000..2bcad91
--- /dev/null
+++ b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/api/annotations/Metrics.java
@@ -0,0 +1,31 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * SDC
+ * ================================================================================
+ * 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.sdc.logging.api.annotations;
+
+/**
+ * Indicates a method whose execution time should be measured and logged as required for Open OPENECOMP metrics.
+ *
+ * @author evitaliy
+ * @since 27/07/2016.
+ */
+
+public @interface Metrics {
+}
diff --git a/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/api/context/ContextPropagationService.java b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/api/context/ContextPropagationService.java
new file mode 100644
index 0000000..98200da
--- /dev/null
+++ b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/api/context/ContextPropagationService.java
@@ -0,0 +1,32 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * SDC
+ * ================================================================================
+ * 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.sdc.logging.api.context;
+
+/**
+ * Should be used to implement a framework-specific mechanism of propagation of a diagnostic context to child threads.
+ *
+ * @author evitaliy
+ * @since 12/09/2016.
+ */
+public interface ContextPropagationService {
+
+ Runnable create(Runnable task);
+}
diff --git a/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/api/context/TaskFactory.java b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/api/context/TaskFactory.java
new file mode 100644
index 0000000..3ad999f
--- /dev/null
+++ b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/api/context/TaskFactory.java
@@ -0,0 +1,79 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * SDC
+ * ================================================================================
+ * 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.sdc.logging.api.context;
+
+import org.openecomp.sdc.logging.api.BaseFactory;
+
+/**
+ * <p>Should be used to propagate a diagnostic context (for instance
+ * <a href="http://www.slf4j.org/manual.html#mdc">MDC</a>) to other threads.</p>
+ *
+ * <p>Applicable when creating a child thread directly, or submitting tasks for potentially postponed execution via
+ * an <a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Executor.html">Executor</a> (including
+ * any of the <a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ExecutorService.html">executor
+ * services</a> and
+ * <a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ForkJoinPool.html">ForkJoinPool</a>).</p>
+ *
+ * <p>The service used by this factory must implement {@link ContextPropagationService}.</p>
+ *
+ * @author evitaliy
+ * @since 12/09/2016.
+ *
+ * @see ContextPropagationService
+ */
+@SuppressWarnings("ThrowableInstanceNeverThrown")
+public class TaskFactory extends BaseFactory {
+
+ private static final ContextPropagationService SERVICE;
+ private static final RuntimeException ERROR;
+
+ static {
+
+ ContextPropagationService service = null;
+ RuntimeException error = null;
+
+ try {
+ service = locateService(ContextPropagationService.class);
+ } catch (Throwable e) {
+ error = new RuntimeException("Failed to instantiate task factory", e);
+ }
+
+ SERVICE = service;
+ ERROR = error;
+ }
+
+ /**
+ * Modify a task so that a diagnostic context is propagated to the thread when the task runs. Done in a
+ * logging-framework specific way.
+ *
+ * @param task any Runnable that will run in a thread
+ * @return modified (wrapped) original task that runs the same business logic, but also takes care of copying the
+ * diagnostic context for logging
+ */
+ public static Runnable create(Runnable task) {
+
+ if (SERVICE == null) {
+ throw ERROR;
+ }
+
+ return SERVICE.create(task);
+ }
+}
diff --git a/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/context/MdcData.java b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/context/MdcData.java
new file mode 100644
index 0000000..a6a673d
--- /dev/null
+++ b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/context/MdcData.java
@@ -0,0 +1,59 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * SDC
+ * ================================================================================
+ * 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.sdc.logging.context;
+
+import org.openecomp.sdc.logging.types.LoggerConstants;
+import org.slf4j.MDC;
+
+
+public abstract class MdcData {
+ private String level;
+ private String errorCode;
+
+ MdcData() {
+ }
+
+ public MdcData(String level, String errorCode) {
+ this.level = level;
+ this.errorCode = errorCode;
+ }
+
+ public void setMdcValues() {
+ MDC.put(LoggerConstants.ERROR_CATEGORY, this.level);
+ MDC.put(LoggerConstants.ERROR_CODE, this.errorCode);
+ }
+
+ public String getLevel() {
+ return level;
+ }
+
+ public void setLevel(String level) {
+ this.level = level;
+ }
+
+ public String getErrorCode() {
+ return errorCode;
+ }
+
+ public void setErrorCode(String errorCode) {
+ this.errorCode = errorCode;
+ }
+}
diff --git a/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/messages/AuditMessages.java b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/messages/AuditMessages.java
new file mode 100644
index 0000000..028a1bc
--- /dev/null
+++ b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/messages/AuditMessages.java
@@ -0,0 +1,28 @@
+package org.openecomp.sdc.logging.messages;
+
+/**
+ * Created by ayalaben on 4/20/2017.
+ */
+public class AuditMessages {
+
+ public static final String AUDIT_MSG = " --Audit-- ";
+
+ public static final String CREATE_VLM = "Create VLM. VLM Name: ";
+ public static final String CHECK_IN_VLM = "Check in VLM. VLM Id: ";
+ public static final String CHECK_OUT_VLM = "Check out VLM. VLM Id: ";
+ public static final String SUBMIT_VLM = "submit VLM. VLM Name: ";
+
+ public static final String CREATE_VSP = "Create VSP. VSP Name: ";
+ public static final String CHECK_IN_VSP = "Check in VSP. VSP Id: ";
+ public static final String CHECK_OUT_VSP = "Check out VSP. VSP Id: ";
+ public static final String SUBMIT_VSP = "Submit VSP. VSP Id: ";
+
+ public static final String UPLOAD_HEAT = "Upload HEAT. VSP Id: ";
+ public static final String UPLOAD_PROCESS_ARTIFACT = "Upload Process Artifact. VSP Id: ";
+ public static final String UPLOAD_ARTIFACT_MIB_POLL = "Upload Artifact SNMP POLL. VSP Id: ";
+ public static final String UPLOAD_ARTIFACT_MIB_TRAP = "Upload Artifact SNMP TRAP. VSP Id: ";
+
+ public static final String IMPORT_SUCCESS = "VSP import to VF success. VSP Id: ";
+ public static final String IMPORT_FAIL = "VSP import to VF fail. VSP Id: ";
+
+}
diff --git a/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/messages/DebugMessages.java b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/messages/DebugMessages.java
new file mode 100644
index 0000000..c3e5f97
--- /dev/null
+++ b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/messages/DebugMessages.java
@@ -0,0 +1,34 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * SDC
+ * ================================================================================
+ * 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.sdc.logging.messages;
+
+
+public class DebugMessages {
+ public static final String DEFAULT_ENTER_METHOD = "Entering %s";
+ public static final String DEFAULT_EXIT_METHOD = "Exiting %s";
+
+ public static final String ENTER_METHOD = "Entering %s with %s = %s";
+ public static final String EXIT_METHOD = "Exiting %s with %s = %s";
+
+ public static final String ENTER_METHOD_FORMATTED = "Entering %s with %s";
+ public static final String EXIT_METHOD_FORMATTED = "Exiting %s with %s";
+
+}
diff --git a/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/types/DebugConstants.java b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/types/DebugConstants.java
new file mode 100644
index 0000000..71884cf
--- /dev/null
+++ b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/types/DebugConstants.java
@@ -0,0 +1,32 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * SDC
+ * ================================================================================
+ * 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.sdc.logging.types;
+
+/**
+ * Created by TALIO on 1/10/2017.
+ */
+public class DebugConstants {
+ public static final String EXIT = "Exit";
+ public static final String EXIT_DEFAULT = "Exit_Default";
+ public static final String ENTER = "Enter";
+ public static final String ENTER_DEFAULT = "Enter_Default";
+ public static final String DEFAULT = "Default";
+}
diff --git a/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/types/LoggerConstants.java b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/types/LoggerConstants.java
new file mode 100644
index 0000000..0d591be
--- /dev/null
+++ b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/types/LoggerConstants.java
@@ -0,0 +1,41 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * SDC
+ * ================================================================================
+ * 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.sdc.logging.types;
+
+
+public class LoggerConstants {
+
+ public static final String REQUEST_ID = "RequestId";
+ public static final String PARTNER_NAME = "PartnerName";
+ public static final String SERVICE_NAME = "ServiceName";
+ public static final String INSTANCE_UUID = "InstanceUUID";
+ public static final String CATEGORY_LOG_LEVEL = "level";
+ public static final String STATUS_CODE = "StatusCode";
+ public static final String RESPONSE_CODE = "ResponseCode";
+ public static final String RESPONSE_DESCRIPTION = "ResponseDescription";
+ public static final String TARGET_SERVICE_NAME = "TargetServiceName";
+ public static final String TARGET_ENTITY = "TargetEntity";
+ public static final String TARGET_ENTITY_API = "API";
+ public static final String TARGET_ENTITY_DB = "DB";
+ public static final String ERROR_CATEGORY = "ErrorCategory";
+ public static final String ERROR_CODE = "ErrorCode";
+ public static final String ERROR_DESCRIPTION = "ErrorDescription";
+}
diff --git a/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/types/LoggerErrorCategory.java b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/types/LoggerErrorCategory.java
new file mode 100644
index 0000000..5addccd
--- /dev/null
+++ b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/types/LoggerErrorCategory.java
@@ -0,0 +1,30 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * SDC
+ * ================================================================================
+ * 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.sdc.logging.types;
+
+
+public enum LoggerErrorCategory {
+ ERROR,
+ WARN,
+ DEBUG,
+ INFO,
+ FATAL;
+}
diff --git a/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/types/LoggerErrorCode.java b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/types/LoggerErrorCode.java
new file mode 100644
index 0000000..141a149
--- /dev/null
+++ b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/types/LoggerErrorCode.java
@@ -0,0 +1,45 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * SDC
+ * ================================================================================
+ * 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.sdc.logging.types;
+
+
+public enum LoggerErrorCode {
+ PERMISSION_ERROR("100"),
+ AVAILABILITY_ERROR("200"),
+ DATA_ERROR("300"),
+ SCHEMA_ERROR("400"),
+ BUSINESS_PROCESS_ERROR("500"),
+ UNKNOWN_ERROR("900");
+
+ private String errorCode;
+
+ LoggerErrorCode(String errorCode) {
+ this.errorCode = errorCode;
+ }
+
+ public String getErrorCode() {
+ return errorCode;
+ }
+
+ public void setErrorCode(String errorCode) {
+ this.errorCode = errorCode;
+ }
+}
diff --git a/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/types/LoggerErrorDescription.java b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/types/LoggerErrorDescription.java
new file mode 100644
index 0000000..16a7b43
--- /dev/null
+++ b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/types/LoggerErrorDescription.java
@@ -0,0 +1,109 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * SDC
+ * ================================================================================
+ * 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.sdc.logging.types;
+
+
+public class LoggerErrorDescription {
+ public static final String ARTIFACT_NOT_REFERENCED = "Artifact not referenced";
+ public static final String WRONG_FILE_EXTENSION = "Wrong file extention";
+ public static final String INVALID_HEAT_FORMAT = "Invalid HEAT format";
+ public static final String PARAMETER_NOT_FOUND = "Referenced parameter not found";
+ public static final String ENV_PARAMETER_NOT_IN_HEAT = "env includes parameter not in HEAT";
+ public static final String PARAMETER_DEFAULT_VALUE_NOT_ALIGNED_WITH_TYPE =
+ "Parameter default value not alinged with type";
+ public static final String INVALID_RESOURCE_TYPE = "Invalid resource type";
+ public static final String INVALID_GET_RESOURCE_SYNTAX = "Invalid get resource syntax";
+ public static final String RESOURCE_NOT_FOUND = "Resource not found";
+ public static final String INVALID_INDEX_VAR = "Invalid Resource Group index var";
+ public static final String MISSING_FILE = "Missing file";
+ public static final String MISSING_NOVA_PROPERTIES = "Missing NOVA server properties";
+ public static final String NESTED_LOOP = "Found nested loop";
+ public static final String MISSING_PARAMETER_IN_NESTED = "Missing parameter in nested file";
+ public static final String WRONG_VALUE_ASSIGNED_NESTED_PARAMETER =
+ "Wrong value assigned in nested parameters";
+ public static final String SERVER_NOT_DEFINED_NOVA = "Server not defined from nova";
+ public static final String WRONG_POLICY_SERVER_GROUP = "Wrong policy in server group";
+ public static final String SERVER_GROUP_SECURITY_GROUP_NOT_IN_USE =
+ "Server group or security group is not in use";
+ public static final String NETWORK_ATTACH_POLICY_NOT_IN_USE =
+ "Network Attach Policy is not in use";
+ public static final String NO_BIND_FROM_PORT_TO_NOVA = "No bind from port to nova sever";
+ public static final String PORT_BINDS_MORE_THAN_ONE_NOVA =
+ "Port binds to more than one nova sever";
+ public static final String MISSING_RESOURCE_DEPENDS_ON = "Missing resource in depends_on";
+ public static final String GET_ATTR_NOT_FOUND = "get_attr not found";
+ public static final String MISSING_GET_PARAM = "Missing get_param";
+ public static final String EMPTY_FILE = "Empty file";
+ public static final String VALIDATE_FILE = "Can't validate file";
+ public static final String INVALID_FILE_TYPE = "Invalid file type";
+ public static final String INVALID_ZIP = "Invalid zip file";
+
+
+ public static final String RESOURCE_UNIQUE_NETWORK_ROLE =
+ "Resource connects to two networks with the same role";
+ public static final String NAME_NOT_ALIGNED_WITH_GUIDELINES = "Name not aligned with guidelines";
+ public static final String VOLUME_FILE_NOT_EXPOSED = "Volume file not exposed";
+ public static final String RESOURCE_NOT_DEFINED_AS_OUTPUT = "Resource is not defined as output";
+ public static final String FLOATING_IP_IN_USE = "Floating IP resource type is in use";
+ public static final String MISSING_BASE_HEAT = "Missing base HEAT file";
+ public static final String MULTI_BASE_HEAT = "Multi base HEAT file";
+
+ public static final String EXTRACT_COMPOSITION_DATA = "Can't extract composition data";
+
+ public static final String MERGE_CONTRAIL_2_AND_3 =
+ "Merge of Contrail 2 and Contrail 3 resources";
+ public static final String CONTRAIL_2_IN_USE = "Contrail 2 resource is in use";
+
+ public static final String INVALID_MANIFEST = "Invalid manifest file";
+
+ public static final String INVALID_YAML_FORMAT = "Invalid YAML format";
+
+ public static final String CREATE_SERVICE_ARTIFACT = "Can't create service artifact";
+ public static final String CREATE_ENRICH_SERVICE_ARTIFACT =
+ "Can't create enriched service artifact";
+ public static final String CREATE_SERVICE_TEMPLATE = "Can't create service template";
+ public static final String CREATE_ENRICH_SERVICE_TEMPLATE =
+ "Can't create enriched service template";
+ public static final String GET_SERVICE_MODEL = "Can't get service model";
+ public static final String MISSING_MANDATORY_PROPERTY = "Missing mandatory property";
+ public static final String INVALID_PROPERTY = "Invalid Property";
+ public static final String INVALID_ADD_ACTION = "Invalid add action";
+ public static final String UNSUPPORTED_ENTITY = "Unsupported entity";
+ public static final String CREATE_CSAR = "Can't create CSAR file";
+ public static final String PACK_ARTIFACTS = "Can't pack artifacts into CSAR file";
+
+ public static final String TRANSLATE_HEAT = "Can't translate HEAT file";
+ public static final String RESOURCE_FILE_READ_ERROR = "Can't read resource file from class path.";
+ public static final String FAILED_TO_GENERATE_GLOBAL_TYPES = "Failed to generate globalTypes";
+
+ public static final String CHECKOUT_ENTITY = "Can't checkout versionable entity";
+ public static final String SUBMIT_ENTITY = "Can't submit versionable entity";
+ public static final String ENTITY_NOT_FOUND = "Versionable entity not found";
+ public static final String INVALID_VALUE = "Invalid value";
+
+ public static final String UNSUPPORTED_OPERATION = "Unsupported operation";
+ public static final String INVALID_JSON = "Invalid JSON format";
+
+ public static final String INSERT_INTO_APPLICATION_CONFIG =
+ "Can't insert value into application config table";
+
+ public static final String CANT_HEAL = "Can't perform healing operation";
+}
diff --git a/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/types/LoggerServiceName.java b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/types/LoggerServiceName.java
new file mode 100644
index 0000000..3fac954
--- /dev/null
+++ b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/types/LoggerServiceName.java
@@ -0,0 +1,153 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * SDC
+ * ================================================================================
+ * 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.sdc.logging.types;
+
+
+public enum LoggerServiceName {
+
+ Create_VLM,
+ Get_VLM,
+ Checkout_VLM,
+ Checkin_VLM,
+ Undo_Checkout_VLM,
+ Submit_VLM,
+ Update_VLM,
+ List_VLM,
+
+ List_EP,
+ Create_EP,
+ Update_EP,
+ Get_EP,
+ Delete_EP,
+
+ List_FG,
+ Create_FG,
+ Update_FG,
+ Get_FG,
+ Delete_FG,
+
+ List_LA,
+ Create_LA,
+ Update_LA,
+ Get_LA,
+ Delete_LA,
+
+ List_LKG,
+ Create_LKG,
+ Update_LKG,
+ Get_LKG,
+ Delete_LKG,
+
+ List_VSPs,
+ List_Packages,
+ Create_VSP,
+ Get_VSP,
+ Checkout_VSP,
+ Checkin_VSP,
+ Undo_Checkout_VSP,
+ Submit_VSP,
+ Update_VSP,
+ Create_Package,
+ List_VSP,
+ Upload_File,
+ Get_Uploaded_File,
+ Get_Translated_File,
+ Get_Questionnaire_VSP,
+ Update_Questionnaire_VSP,
+ Get_Information_Artifact,
+
+
+ List_Component_Processes,
+ Delete_List_Component_Processes,
+ Create_Component_Processes,
+ Update_Component_Processes,
+ Get_Component_Processes,
+ Delete_Component_Processes,
+ Upload_File_Component_Processes,
+ Get_Uploaded_File_Component_Processes,
+ Delete_Uploaded_File_Component_Processes,
+
+ List_Processes,
+ Delete_List_Processes,
+ Create_Processes,
+ Update_Processes,
+ Get_Processes,
+ Delete_Processes,
+ Upload_File_Processes,
+ Get_Uploaded_File_Processes,
+ Delete_Uploaded_File_Processes,
+
+ List_Components,
+ Delete_List_Components,
+ Create_Component,
+ Update_Component,
+ Get_Component,
+ Delete_Component,
+ Get_Questionnaire_Component,
+ Update_Questionnaire_Component,
+
+ Upload_MIB_File,
+ Delete_MIB_File,
+ List_MIB_Files,
+
+ List_Network,
+ Create_Network,
+ Update_Network,
+ Get_Network,
+ Delete_Network,
+
+ List_nics,
+ Delete_List_nics,
+ Create_nic,
+ Update_nic,
+ Get_nic,
+ Delete_nic,
+ Get_Questionnaire_nic,
+ Update_Questionnaire_nic,
+
+ Create_Process,
+ Update_Process,
+
+ Insert_To_ApplicationConfig_Table,
+ Get_From_ApplicationConfig_Table,
+ Get_List_From_ApplicationConfig_Table_By_Namespace,
+
+ Get_List_Activity_Log,
+
+ Validate,
+ Enrich, Delete_VSP, Get_Process_Artifact, Create_Entity, Checkout_Entity, Undo_Checkout_Entity,
+ Checkin_Entity, Submit_Entity, Get_Entity_Version, Delete_Entity, Undo_Delete_Entity,
+ Translate_Resource, Translate_HEAT, LoggerServiceName, Get_VSP_List, Delete_VLM, Update_Manifest,
+
+ CREATE_COMPONENT_DEPENDENCY_MODEL,
+ GET_COMPONENT_DEPENDENCY_MODEL;
+
+ public static String getServiceName(LoggerServiceName serviceName) {
+ return serviceName.name().replace("_", " ");
+ }
+
+ @Override
+ public String toString(){
+ return this.name().replace("_", " ");
+ }
+
+
+}
diff --git a/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/types/LoggerTragetServiceName.java b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/types/LoggerTragetServiceName.java
new file mode 100644
index 0000000..b496d73
--- /dev/null
+++ b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/java/org/openecomp/sdc/logging/types/LoggerTragetServiceName.java
@@ -0,0 +1,186 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * SDC
+ * ================================================================================
+ * 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.sdc.logging.types;
+
+
+public class LoggerTragetServiceName {
+ /*HEAT validator*/
+ public static final String VALIDATE_HEAT_BASE_STRUCTURE = "Validate Heat Base Structure";
+ public static final String VALIDATE_ARTIFACTS_EXISTENCE = "Validate Artifacts Existence";
+ public static final String VALIDATE_RESOURCE_REFERENCE_EXISTENCE =
+ "Validate Resource Reference Existence";
+ public static final String VALIDATE_PARAMETER_REFERENCE_EXITENCE =
+ "Validate Parameter Reference Existence";
+ public static final String VALIDATE_GET_ATTR_FROM_NESTED = "Validate get_attr From Nested";
+ public static final String VALIDATE_ENV_FILE = "Validate env File";
+ public static final String VALIDATE_BASE_PORTS_EXISTENCE = "Validate Base Ports Existence";
+ public static final String VALIDATE_ASSIGNED_VALUES_FOR_NOVA_IMAGE_FLAVOR =
+ "Validate Assigned Value For Nova Server Image Or Flavor";
+ public static final String VALIDATE_NOVA_SERVER_PORT_BINDING =
+ "Validate Ports Binding From Nova Server";
+ public static final String VALIDATE_SERVER_GROUP_EXISTENCE =
+ "Validate Nova Server Group Existence";
+ public static final String VALIDATE_PROPERTIES_MATCH_NESTED_PARAMETERS =
+ "Validate All Properties Match Nested Parameters";
+ public static final String VALIDATE_NESTING_LOOPS = "Validate Nested Loops";
+ public static final String VALIDATE_NOVA_SEVER_GROUP_POLICY = "Validate Nova Server Group Policy";
+ public static final String VALIDATE_RESOURCE_GROUP_TYPE = "Validate Resource Group Resource Type";
+ public static final String VALIDATE_ALL_SECURITY_GROUP_USED =
+ "Validate All Security Group Are Used From Neutron Port Resource";
+ public static final String VALIDATE_CONTRAIL_ATTACH_POLICY_TYPE =
+ "Validate Contrail Attach Policy Type";
+ public static final String VALIDATE_SECURITY_GROUP_FROM_BASE_OUTPUT =
+ "Validate Security Groups From Base File Outputs";
+ public static final String CHECK_FOR_ORPHAN_PORTS = "Validate All Referenced Ports Are Used";
+ public static final String CHECK_FOR_ORPHAN_ARTIFACTS = "Validate All Artifacts Are Referenced";
+ public static final String CHECK_FOR_VALID_FILE_EXTENTION = "Validate File Extention";
+ public static final String VALIDATE_PARAMTER_DEFAULT_MATCH_TYPE =
+ "Validate Parameter Default Aligns With Type";
+ public static final String VALIDATE_ENV_PARAMETER_MATCH_TYPE =
+ "Validate env Parameter Matches Type";
+ public static final String VALIDATE_RESOURCE_TYPE = "Validate Resource Type";
+ public static final String VALIDATE_FILE_EXISTENCE = "Validate File Exitence";
+ public static final String GET_RESOURCE_LIST_BY_TYPE =
+ "Get All Resources By Specific Resource Type";
+ public static final String VALIDATE_ALL_SERVER_GROUP_OR_SECURITY_GROUP_IN_USE =
+ "Validate All Security Group Or Server Group Are In Use";
+ public static final String VALIDATE_ATTACH_POLICY_IN_USE =
+ "Validate All Network Attach Policies Are In Use";
+ public static final String CHECK_RESOURCE_DEPENDS_ON = "Check Resource dependes_on";
+ public static final String GET_SHARED_RESOURCES_FROM_OUTPUTS =
+ "Get Shared Resources From Outputs";
+ public static final String VALIDATE_GET_RESOURCE = "Validate get_resource Syntax";
+ public static final String VALIDATE_FILE = "Validate File";
+
+ /*manifest validator*/
+ public static final String VALIDATE_MANIFEST_CONTENT = "Validate Manifest Content";
+ public static final String VALIDATE_FILE_IN_ZIP = "Validate File In Zip";
+ public static final String VALIDATE_FILE_IN_MANIFEST = "Validate File In Manifest";
+ public static final String VALIDATE_FILE_TYPE_AND_NAME =
+ "Validate File Type And Name In Manifest";
+ public static final String SCAN_MANIFEST_STRUCTURE = "Scan Manifest Structure";
+ public static final String VALIDATE_FILE_TYPE = "Validate File Type";
+
+ /*YAML validator*/
+ public static final String VALIDATE_YAML_CONTENT = "Validate YAML Content";
+
+
+ /*OPENECOMP guide line validator*/
+ public static final String VALIDATE_BASE_FILE =
+ "Validate If All Resources In Base File Are Exposed";
+ public static final String VALIDATE_FORBIDDEN_RESOURCE = "Validate If Resource Type Is Forbidden";
+ public static final String VALIDATE_FIXED_IPS_NAME = "Validate fixed_ips Naming Convention";
+ public static final String VALIDATE_IMAGE_AND_FLAVOR_NAME =
+ "Validate image And flavor Naming Convention";
+ public static final String VALIDATE_NOVA_SERVER_NAME = "Validate Nova Server Naming Convention";
+ public static final String VALIDATE_AVAILABILITY_ZONE_NAME =
+ "Validate availability_zone Naming Convention";
+ public static final String VALIDATE_NOVA_META_DATA_NAME =
+ "Validate Nova Server Meta Data Naming Convention";
+ public static final String VALIDATE_PORT_NETWORK_NAME = "Validate Port Network Naming Convention";
+ public static final String VALIDATE_VM_SYNC_IN_IMAGE_FLAVOR =
+ "Validate VM Name Is Sync In Image And Flavor";
+ public static final String VALIDATE_RESOURCE_NETWORK_UNIQUE_ROLW =
+ "Validate Nova Server Unique Role";
+ public static final String VALIDATE_VOLUME_FILE = "Validate HEAT Volume File";
+
+
+ public static final String VALIDATE_CONTRAIL_VM_NAME =
+ "Validate Contrail VM Name Aligned With Guidelines";
+ public static final String MERGE_OF_CONTRAIL_2_AND_3 = "Merge Of Contrail 2 And Contrail 3";
+ public static final String CONTRAIL_2_IN_USE = "Validate Contrail 2 Resource Is In Use";
+
+
+ public static final String VALIDATE_MANIFEST_PRE_CONDITION = "Validate Manifest Pre-Condition";
+ public static final String VALIDATE_HEAT_FORMAT = "Validate HEAT Format";
+
+ public static final String CREATE_ENTITY = "Create Entity";
+ public static final String CHECKOUT_ENTITY = "Checkout Entity";
+ public static final String UNDO_CHECKOUT_ENTITY = "Undo Checkout Entity";
+ public static final String CHECKIN_ENTITY = "Checkin Entity";
+ public static final String SUBMIT_ENTITY = "Submit Entity";
+ public static final String DELETE_ENTITY = "Delete Entity";
+ public static final String UNDO_DELETE_ENTITY = "Undo Delete Entity";
+
+ public static final String SUBMIT_VSP = "Submit VSP";
+ public static final String GET_VSP = "Get VSP";
+ public static final String DELETE_VSP = "Delete VSP";
+ public static final String ENRICH = "Enrich";
+ public static final String UPLOAD_FILE = "Upload file";
+ public static final String GET_UPLOADED_HEAT = "Get Uploaded HEAT File";
+ public static final String GET_TRANSLATED_FILE = "Get Translated File";
+ public static final String CREATE_TRANSLATED_FILE = "Create Translated File";
+ public static final String CREATE_PACKAGE = "Create Package";
+
+ public static final String SELF_HEALING = "Self Healing";
+ public static final String WRITE_ARTIFACT_XML = "Write Artifact To XML File";
+
+ public static final String GET_VLM = "Get VLM";
+
+ public static final String VALIDATE_MIB = "Validate MIB File";
+ public static final String UPLOAD_MIB = "Upload MIB file";
+
+ public static final String GET_VERSION_INFO = "Get version info";
+
+ public static final String CREATE_NETWORK = "Create Network";
+ public static final String DELETE_NETWORK = "Delete Network";
+
+ public static final String CREATE_COMPONENT = "Create Component";
+ public static final String DELETE_COMPONENT = "Delete Component";
+
+ public static final String GET_PROCESS_ARTIFACT = "Get Process Artifact";
+ public static final String UPLOAD_PROCESS_ARTIFACT = "Upload Process Artifact";
+
+ public static final String CREATE_NIC = "Create Nic";
+ public static final String DELETE_NIC = "Delete Nic";
+
+ public static final String EXTRACT_COMPOSITION_DATA = "Extract Composition Data";
+
+ public static final String TRANSLATE_RESOURCE = "Translate Resource";
+ public static final String GET_RESOURCE = "Get Resource";
+ public static final String VALIDATE_HEAT_BEFORE_TRANSLATE = "Validate HEAT Before Translate";
+
+ public static final String CREATE_SERVICE_ARTIFACT = "Create Service Artifact In DB";
+ public static final String CREATE_SERVICE_ENRICH_ARTIFACT =
+ "Create Service Enriched Artifact In DB";
+ public static final String CREATE_SERVICE_TEMPLATE = "Create Service Template In DB";
+ public static final String CREATE_ENRICH_SERVICE_TEMPLATE =
+ "Create Enriched Service Template In DB";
+ public static final String GET_SERVICE_MODEL = "Get service model";
+ public static final String GET_SERVICE_TEMPLATE = "Get Service Template";
+ public static final String CREATE_REQUIREMENT_ASSIGNMENT = "Create Requierment Assignment";
+ public static final String GENERATE_TRANSLATED_ID = "Generate Translated Id";
+ public static final String ADD_ENTITIES_TO_TOSCA = "Add Entities To TOSCA";
+ public static final String CREATE_CSAR = "Create CSAR";
+ public static final String PACK_ARTIFACTS = "Pack Artifacts Into CSAR File";
+
+ public static final String VALIDATE_CHOICE_VALUE = "Check Chosen Value";
+
+ public static final String INSERT_INTO_APPLICATION_CONFIG =
+ "Insert Value Into Application Config";
+
+ public static final String VALIDATE_FILE_DATA_STRUCTURE = "Validate Manifest Sent From User";
+
+ public static final String CREATE_COMPONENT_DEPENDENCY_MODEL = "Create Component Dependency "
+ + "Model";
+
+ public static final String READ_RESOURCE_FILE = "Read Resource File";
+}
diff --git a/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/resources/factoryConfiguration.json b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/resources/factoryConfiguration.json
new file mode 100644
index 0000000..33163b3
--- /dev/null
+++ b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/resources/factoryConfiguration.json
@@ -0,0 +1,3 @@
+{
+ "org.openecomp.sdc.logging.api.BaseFactory": "org.openecomp.sdc.logging.api.LoggerFactory"
+}
\ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/resources/logback.xml b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/resources/logback.xml
new file mode 100644
index 0000000..8eb22bd
--- /dev/null
+++ b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-api/src/main/resources/logback.xml
@@ -0,0 +1,284 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration scan="true" scanPeriod="5 seconds">
+
+ <property scope="system" name="OPENECOMP-component-name" value="ASDC" />
+ <property scope="system" name="OPENECOMP-subcomponent-name" value="ASDC-BE" />
+ <property file="${config.home}/catalog-be/configuration.yaml" />
+ <property scope="context" name="enable-all-log" value="false" />
+
+ <!--statusListener class="ch.qos.logback.core.status.OnConsoleStatusListener" />
+ <include resource="asdc_debug_logback.xml"/-->
+
+ <!-- value used by pattern field list (| - is inter-field separator, || - unavailable or not applicable field value) (m - mandatory, o- optional)-->
+ <!--timestamp(m)| requestID(m)| serviceInstanceID(o)| threadID(m)| physicalServerName(o)| serviceName(m)| userID(m)| logLevel(m)| severity(o)| serverIpAddress(m)| serverName(m)| clientIpAddress(o)| className(m)| timer(o)| detailedMessage(o)-->
+ <property name="default-log-pattern"
+ value="%d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%X{uuid}|%X{serviceInstanceID}|%thread||${OPENECOMP-subcomponent-name}|%X{userId}|%level|%X{alarmSeverity}|%X{localAddr}|${beFqdn}|%X{remoteAddr}|%logger{35}|%X{timer}|ActivityType=<%M>, Desc=<%msg>%n" />
+
+ <property name="asdc-debug-log-pattern" value="%d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%X{RequestId}|%msg %n"/>
+
+ <!-- All log -->
+ <if condition='property("enable-all-log").equalsIgnoreCase("true")'>
+ <then>
+ <appender name="ALL_ROLLING"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${log.home}/${OPENECOMP-component-name}/${OPENECOMP-subcomponent-name}/all.log
+ </file>
+
+ <rollingPolicy
+ class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+ <fileNamePattern>${log.home}/${OPENECOMP-component-name}/${OPENECOMP-subcomponent-name}/all.log.%i
+ </fileNamePattern>
+ <minIndex>1</minIndex>
+ <maxIndex>10</maxIndex>
+ </rollingPolicy>
+
+ <triggeringPolicy
+ class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+ <maxFileSize>20MB</maxFileSize>
+ </triggeringPolicy>
+ <encoder>
+ <pattern>${default-log-pattern}</pattern>
+ </encoder>
+ </appender>
+
+ <appender name="ASYNC_ALL" class="ch.qos.logback.classic.AsyncAppender">
+ <appender-ref ref="ALL_ROLLING" />
+ </appender>
+ </then>
+ </if>
+
+ <!-- Error log -->
+ <appender name="ERROR_ROLLING"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${log.home}/${OPENECOMP-component-name}/${OPENECOMP-subcomponent-name}/Error.log
+ </file>
+
+ <!-- Audit messages filter - deny audit messages -->
+ <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
+ <evaluator class="ch.qos.logback.classic.boolex.OnMarkerEvaluator">
+ <marker>AUDIT_MARKER</marker>
+ </evaluator>
+ <onMismatch>NEUTRAL</onMismatch>
+ <onMatch>DENY</onMatch>
+ </filter>
+
+ <!-- Transaction messages filter - deny Transaction messages -->
+ <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
+ <evaluator class="ch.qos.logback.classic.boolex.OnMarkerEvaluator">
+ <marker>TRANSACTION_MARKER</marker>
+ </evaluator>
+ <onMismatch>NEUTRAL</onMismatch>
+ <onMatch>DENY</onMatch>
+ </filter>
+
+ <!-- deny all events with a level below INFO, that is TRACE and DEBUG -->
+ <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+ <level>INFO</level>
+ </filter>
+
+ <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+ <fileNamePattern>${log.home}/${OPENECOMP-component-name}/${OPENECOMP-subcomponent-name}/Error.log.%i
+ </fileNamePattern>
+ <minIndex>1</minIndex>
+ <maxIndex>10</maxIndex>
+ </rollingPolicy>
+
+ <triggeringPolicy
+ class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+ <maxFileSize>20MB</maxFileSize>
+ </triggeringPolicy>
+ <encoder>
+ <pattern>${default-log-pattern}</pattern>
+ </encoder>
+ </appender>
+
+ <!-- Debug log -->
+ <appender name="DEBUG_ROLLING"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${log.home}/${OPENECOMP-component-name}/${OPENECOMP-subcomponent-name}/debug.log
+ </file>
+
+ <!-- No need to deny audit messages - they are INFO only, will be denied
+ anyway -->
+ <!-- Transaction messages filter - deny Transaction messages, there are
+ some DEBUG level messages among them -->
+ <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
+ <evaluator class="ch.qos.logback.classic.boolex.OnMarkerEvaluator">
+ <marker>TRANSACTION_MARKER</marker>
+ </evaluator>
+ <onMismatch>NEUTRAL</onMismatch>
+ <onMatch>DENY</onMatch>
+ </filter>
+
+ <!-- accept DEBUG and TRACE level -->
+ <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
+ <evaluator class="ch.qos.logback.classic.boolex.GEventEvaluator">
+ <expression>
+ e.level.toInt() <= DEBUG.toInt()
+ </expression>
+ </evaluator>
+ <OnMismatch>DENY</OnMismatch>
+ <OnMatch>NEUTRAL</OnMatch>
+ </filter>
+
+ <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+ <fileNamePattern>${log.home}/${OPENECOMP-component-name}/${OPENECOMP-subcomponent-name}/debug.log.%i
+ </fileNamePattern>
+ <minIndex>1</minIndex>
+ <maxIndex>10</maxIndex>
+ </rollingPolicy>
+
+ <triggeringPolicy
+ class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+ <maxFileSize>20MB</maxFileSize>
+ </triggeringPolicy>
+ <encoder>
+ <pattern>${default-log-pattern}</pattern>
+ </encoder>
+ </appender>
+
+ <!-- Debug log -->
+ <appender name="PACKAGE_DEBUG_ROLLING"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${log.home}/${OPENECOMP-component-name}/${OPENECOMP-subcomponent-name}/debug_by_package.log
+ </file>
+
+ <!-- No need to deny audit messages - they are INFO only, will be denied
+ anyway -->
+ <!-- Transaction messages filter - deny Transaction messages, there are
+ some DEBUG level messages among them -->
+ <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
+ <evaluator class="ch.qos.logback.classic.boolex.OnMarkerEvaluator">
+ <marker>TRANSACTION_MARKER</marker>
+ </evaluator>
+ <onMismatch>NEUTRAL</onMismatch>
+ <onMatch>DENY</onMatch>
+ </filter>
+
+ <!-- accept DEBUG and TRACE level -->
+ <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
+ <evaluator class="ch.qos.logback.classic.boolex.GEventEvaluator">
+ <expression>
+ e.level.toInt() <= DEBUG.toInt()
+ </expression>
+ </evaluator>
+ <OnMismatch>DENY</OnMismatch>
+ <OnMatch>NEUTRAL</OnMatch>
+ </filter>
+
+ <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+ <fileNamePattern>${log.home}/${OPENECOMP-component-name}/${OPENECOMP-subcomponent-name}/debug_by_package.log.%i
+ </fileNamePattern>
+ <minIndex>1</minIndex>
+ <maxIndex>10</maxIndex>
+ </rollingPolicy>
+
+ <triggeringPolicy
+ class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+ <maxFileSize>20MB</maxFileSize>
+ </triggeringPolicy>
+ <encoder>
+ <pattern>${asdc-debug-log-pattern}</pattern>
+ </encoder>
+ </appender>
+
+ <!-- Audit log -->
+ <appender name="AUDIT_ROLLING"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+
+ <file>${log.home}/${OPENECOMP-component-name}/${OPENECOMP-subcomponent-name}/audit.log
+ </file>
+
+ <!-- Audit messages filter - accept audit messages -->
+ <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
+ <evaluator class="ch.qos.logback.classic.boolex.OnMarkerEvaluator">
+ <marker>AUDIT_MARKER</marker>
+ </evaluator>
+ <onMismatch>DENY</onMismatch>
+ <onMatch>ACCEPT</onMatch>
+ </filter>
+
+ <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+ <fileNamePattern>${log.home}/${OPENECOMP-component-name}/${OPENECOMP-subcomponent-name}/audit.log.%i
+ </fileNamePattern>
+ <minIndex>1</minIndex>
+ <maxIndex>10</maxIndex>
+ </rollingPolicy>
+
+ <triggeringPolicy
+ class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+ <maxFileSize>20MB</maxFileSize>
+ </triggeringPolicy>
+ <encoder>
+ <pattern>${default-log-pattern}</pattern>
+ </encoder>
+ </appender>
+
+ <!-- SdncTransaction log -->
+ <appender name="TRANSACTION_ROLLING"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+
+ <file>${log.home}/${OPENECOMP-component-name}/${OPENECOMP-subcomponent-name}/transaction.log
+ </file>
+
+ <!-- Transaction messages filter - accept audit messages -->
+ <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
+ <evaluator class="ch.qos.logback.classic.boolex.OnMarkerEvaluator">
+ <marker>TRANSACTION_MARKER</marker>
+ </evaluator>
+ <onMismatch>DENY</onMismatch>
+ <onMatch>ACCEPT</onMatch>
+ </filter>
+
+ <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+ <fileNamePattern>${log.home}/${OPENECOMP-component-name}/${OPENECOMP-subcomponent-name}/transaction.log.%i
+ </fileNamePattern>
+ <minIndex>1</minIndex>
+ <maxIndex>10</maxIndex>
+ </rollingPolicy>
+
+ <triggeringPolicy
+ class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+ <maxFileSize>20MB</maxFileSize>
+ </triggeringPolicy>
+ <encoder>
+ <pattern>${default-log-pattern}</pattern>
+ </encoder>
+ </appender>
+
+ <!-- Asynchronicity Configurations -->
+ <appender name="ASYNC_DEBUG" class="ch.qos.logback.classic.AsyncAppender">
+ <appender-ref ref="DEBUG_ROLLING" />
+ </appender>
+
+ <appender name="ASYNC_TRANSACTION" class="ch.qos.logback.classic.AsyncAppender">
+ <appender-ref ref="TRANSACTION_ROLLING" />
+ </appender>
+
+ <appender name="ASYNC_ERROR" class="ch.qos.logback.classic.AsyncAppender">
+ <appender-ref ref="ERROR_ROLLING" />
+ </appender>
+
+
+ <root level="INFO">
+ <appender-ref ref="ASYNC_ERROR" />
+ <appender-ref ref="ASYNC_DEBUG" />
+ <appender-ref ref="AUDIT_ROLLING" />
+ <appender-ref ref="ASYNC_TRANSACTION" />
+ <if condition='property("enable-all-log").equalsIgnoreCase("true")'>
+ <then>
+ <appender-ref ref="ALL_ROLLING" />
+ </then>
+ </if>
+ </root>
+
+ <logger name="org.openecomp.sdc" level="INFO" />
+
+ <logger name="org.openecomp.sdc.vendorsoftwareproduct" level="DEBUG" additivity ="false">
+ <appender-ref ref="PACKAGE_DEBUG_ROLLING" />
+ </logger>
+
+ <logger name="org.openecomp.sdc.vendorlicense" level="DEBUG" additivity ="false">
+ <appender-ref ref="PACKAGE_DEBUG_ROLLING" />
+ </logger>
+</configuration>
\ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-core/pom.xml b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-core/pom.xml
new file mode 100644
index 0000000..a0096e6
--- /dev/null
+++ b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-core/pom.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <name>openecomp-sdc-logging-core</name>
+ <groupId>org.openecomp.sdc</groupId>
+ <artifactId>openecomp-sdc-logging-core</artifactId>
+
+ <parent>
+ <groupId>org.openecomp.sdc</groupId>
+ <artifactId>openecomp-logging-lib</artifactId>
+ <version>1.1.0-SNAPSHOT</version>
+ </parent>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.openecomp.sdc</groupId>
+ <artifactId>openecomp-sdc-logging-api</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-context</artifactId>
+ <version>${spring.framework.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-webmvc</artifactId>
+ <version>${spring.framework.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>ch.qos.logback</groupId>
+ <artifactId>logback-classic</artifactId>
+ <version>${logback.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>javax.servlet</groupId>
+ <artifactId>servlet-api</artifactId>
+ <version>${servlet.version}</version>
+ </dependency>
+ </dependencies>
+
+</project>
diff --git a/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-core/pom.xml.versionsBackup b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-core/pom.xml.versionsBackup
new file mode 100644
index 0000000..374de71
--- /dev/null
+++ b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-core/pom.xml.versionsBackup
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <dependencies>
+ <!--dependency>
+ <groupId>org.openecomp.core</groupId>
+ <artifactId>openecomp-common-lib</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ </dependency-->
+ <dependency>
+ <groupId>org.openecomp.sdc</groupId>
+ <artifactId>openecomp-sdc-logging-api</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-context</artifactId>
+ <version>4.1.3.RELEASE</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-webmvc</artifactId>
+ <version>4.1.3.RELEASE</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>ch.qos.logback</groupId>
+ <artifactId>logback-classic</artifactId>
+ <version>${logback.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>javax.servlet</groupId>
+ <artifactId>servlet-api</artifactId>
+ <version>2.5</version>
+ </dependency>
+ <dependency>
+ <groupId>ch.qos.logback</groupId>
+ <artifactId>logback-classic</artifactId>
+ <version>1.1.7</version>
+ </dependency>
+
+ </dependencies>
+
+ <parent>
+ <groupId>org.openecomp.sdc</groupId>
+ <artifactId>openecomp-logging-lib</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ </parent>
+
+ <groupId>org.openecomp.sdc</groupId>
+ <artifactId>openecomp-sdc-logging-core</artifactId>
+ <name>openecomp-sdc-logging-core</name>
+ <version>1.0-SNAPSHOT</version>
+
+
+</project>
\ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-core/src/main/java/org/openecomp/sdc/logging/Markers.java b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-core/src/main/java/org/openecomp/sdc/logging/Markers.java
new file mode 100644
index 0000000..711e6d1
--- /dev/null
+++ b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-core/src/main/java/org/openecomp/sdc/logging/Markers.java
@@ -0,0 +1,50 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * SDC
+ * ================================================================================
+ * 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.sdc.logging;
+
+import org.slf4j.Marker;
+import org.slf4j.MarkerFactory;
+
+/**
+ * <p>The list of markers that can be used for special logging such as metrics, audit, etc.</p>
+ *
+ * <p>Although markers can be easily instantiated whenever needed, having constants for them helps eliminate mistakes -
+ * misspelling, using a marker that is not handled, etc.</p>
+ *
+ * <p>Usage:</p>
+ *
+ * <pre>
+ *
+ * Logger log = LogFactory.getLogger(this.getClass());
+ * log.info(Markers.AUDIT, "User '{}' logged out", user);
+ *
+ * </pre>
+ *
+ * @author EVITALIY
+ * @since 13/09/2016.
+ *
+ * @see Marker
+ */
+public class Markers {
+
+ public static final Marker AUDIT = MarkerFactory.getMarker("AUDIT");
+ public static final Marker METRICS = MarkerFactory.getMarker("METRICS");
+}
diff --git a/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-core/src/main/java/org/openecomp/sdc/logging/SLF4JLoggerCreationService.java b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-core/src/main/java/org/openecomp/sdc/logging/SLF4JLoggerCreationService.java
new file mode 100644
index 0000000..5b7ed5e
--- /dev/null
+++ b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-core/src/main/java/org/openecomp/sdc/logging/SLF4JLoggerCreationService.java
@@ -0,0 +1,240 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * SDC
+ * ================================================================================
+ * 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.sdc.logging;
+
+import org.openecomp.sdc.logging.api.Logger;
+import org.openecomp.sdc.logging.api.LoggerCreationService;
+import org.slf4j.LoggerFactory;
+
+/**
+ * @author evitaliy
+ * @since 13/09/2016.
+ */
+public class SLF4JLoggerCreationService implements LoggerCreationService {
+
+ @Override
+ public Logger getLogger(String className) {
+ return new SFL4JWrapper(className);
+ }
+
+ @Override
+ public Logger getLogger(Class<?> clazz) {
+ return new SFL4JWrapper(clazz);
+ }
+
+ private class SFL4JWrapper implements Logger {
+
+ private final org.slf4j.Logger logger;
+
+ public SFL4JWrapper(Class<?> clazz) {
+ logger = LoggerFactory.getLogger(clazz);
+ }
+
+ public SFL4JWrapper(String className) {
+ logger = LoggerFactory.getLogger(className);
+ }
+
+ @Override
+ public String getName() {
+ return logger.getName();
+ }
+
+ @Override
+ public boolean isMetricsEnabled() {
+ return logger.isInfoEnabled(Markers.METRICS);
+ }
+
+ @Override
+ public void metrics(String msg) {
+ logger.info(Markers.METRICS, msg);
+ }
+
+ @Override
+ public void metrics(String msg, Object arg) {
+ logger.info(Markers.METRICS, msg, arg);
+ }
+
+ @Override
+ public void metrics(String msg, Object arg1, Object arg2) {
+ logger.info(Markers.METRICS, msg, arg1, arg2);
+ }
+
+ @Override
+ public void metrics(String msg, Object... arguments) {
+ logger.info(Markers.METRICS, msg, arguments);
+ }
+
+ @Override
+ public void metrics(String msg, Throwable t) {
+ logger.info(Markers.METRICS, msg, t);
+ }
+
+ @Override
+ public boolean isAuditEnabled() {
+ return logger.isInfoEnabled(Markers.AUDIT);
+ }
+
+ @Override
+ public void audit(String msg) {
+ logger.info(Markers.AUDIT, msg);
+ }
+
+ @Override
+ public void audit(String msg, Object arg) {
+ logger.info(Markers.AUDIT, msg, arg);
+ }
+
+ @Override
+ public void audit(String msg, Object arg1, Object arg2) {
+ logger.info(Markers.AUDIT, msg, arg1, arg2);
+ }
+
+ @Override
+ public void audit(String msg, Object... arguments) {
+ logger.info(Markers.AUDIT, msg, arguments);
+ }
+
+ @Override
+ public void audit(String msg, Throwable t) {
+ logger.info(Markers.AUDIT, msg, t);
+ }
+
+ @Override
+ public boolean isDebugEnabled() {
+ return logger.isDebugEnabled();
+ }
+
+ @Override
+ public void debug(String msg) {
+ logger.debug(msg);
+ }
+
+ @Override
+ public void debug(String format, Object arg) {
+ logger.debug(format, arg);
+ }
+
+ @Override
+ public void debug(String format, Object arg1, Object arg2) {
+ logger.debug(format, arg1, arg2);
+ }
+
+ @Override
+ public void debug(String format, Object... arguments) {
+ logger.debug(format, arguments);
+ }
+
+ @Override
+ public void debug(String msg, Throwable t) {
+ logger.debug(msg, t);
+ }
+
+ @Override
+ public boolean isInfoEnabled() {
+ return logger.isInfoEnabled();
+ }
+
+ @Override
+ public void info(String msg) {
+ logger.info(msg);
+ }
+
+ @Override
+ public void info(String format, Object arg) {
+ logger.info(format, arg);
+ }
+
+ @Override
+ public void info(String format, Object arg1, Object arg2) {
+ logger.info(format, arg1, arg2);
+ }
+
+ @Override
+ public void info(String format, Object... arguments) {
+ logger.info(format, arguments);
+ }
+
+ @Override
+ public void info(String msg, Throwable t) {
+ logger.info(msg, t);
+ }
+
+ @Override
+ public boolean isWarnEnabled() {
+ return logger.isWarnEnabled();
+ }
+
+ @Override
+ public void warn(String msg) {
+ logger.warn(msg);
+ }
+
+ @Override
+ public void warn(String format, Object arg) {
+ logger.warn(format, arg);
+ }
+
+ @Override
+ public void warn(String format, Object... arguments) {
+ logger.warn(format, arguments);
+ }
+
+ @Override
+ public void warn(String format, Object arg1, Object arg2) {
+ logger.warn(format, arg1, arg2);
+ }
+
+ @Override
+ public void warn(String msg, Throwable t) {
+ logger.warn(msg, t);
+ }
+
+ @Override
+ public boolean isErrorEnabled() {
+ return logger.isErrorEnabled();
+ }
+
+ @Override
+ public void error(String msg) {
+ logger.error(msg);
+ }
+
+ @Override
+ public void error(String format, Object arg) {
+ logger.error(format, arg);
+ }
+
+ @Override
+ public void error(String format, Object arg1, Object arg2) {
+ logger.error(format, arg1, arg2);
+ }
+
+ @Override
+ public void error(String format, Object... arguments) {
+ logger.error(format, arguments);
+ }
+
+ @Override
+ public void error(String msg, Throwable t) {
+ logger.error(msg, t);
+ }
+ }
+}
diff --git a/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-core/src/main/java/org/openecomp/sdc/logging/aspects/DebugAspect.java b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-core/src/main/java/org/openecomp/sdc/logging/aspects/DebugAspect.java
new file mode 100644
index 0000000..7ac5be0
--- /dev/null
+++ b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-core/src/main/java/org/openecomp/sdc/logging/aspects/DebugAspect.java
@@ -0,0 +1,70 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * SDC
+ * ================================================================================
+ * 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.sdc.logging.aspects;
+
+import org.aspectj.lang.JoinPoint;
+import org.openecomp.sdc.logging.context.impl.MdcDataDebugMessage;
+import org.slf4j.Marker;
+import org.slf4j.MarkerFactory;
+
+import java.lang.reflect.Method;
+
+
+/**
+ * Created by TALIO on 12/26/2016.
+ */
+public class DebugAspect {
+
+ private static final String MESSAGE_TEMPLATE = "'{}' '{}' with '{}'";
+ private static final Marker DEBUG = MarkerFactory.getMarker("DEBUG");
+ private static MdcDataDebugMessage mdcDataDebugMessage = new MdcDataDebugMessage();
+
+// @Autowired
+// private ParameterNameDiscoverer parameterNameDiscoverer;
+
+ public void debugEnterMethod(final JoinPoint joinPoint){
+
+ Class type = joinPoint.getSignature().getDeclaringType();
+ Method currentMethod = null;
+ for(Method method : type.getMethods()){
+ if(method.getName().equals(joinPoint.getSignature().getName())){
+ currentMethod = method;
+ break;
+ }
+ }
+
+// String[] parameterNames = parameterNameDiscoverer.getParameterNames(currentMethod);
+// Object[] args = joinPoint.getArgs();
+// Parameter[] parameters = currentMethod.getParameters();
+// StringBuilder str = new StringBuilder(joinPoint.getSignature().getName() + " with parameters:" +
+// " ");
+// if(args.length == parameters.length) {
+// for (int i = 0; i < args.length; i++) {
+// str.append(parameters[i].getName()).append('=').append(args[i]);
+// }
+// }
+ mdcDataDebugMessage.debugEntryMessage(null, null);
+ }
+
+ public void debugExitMethod(final JoinPoint joinPoint){
+ mdcDataDebugMessage.debugExitMessage(null, null);
+ }
+}
diff --git a/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-core/src/main/java/org/openecomp/sdc/logging/aspects/MetricsAspect.java b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-core/src/main/java/org/openecomp/sdc/logging/aspects/MetricsAspect.java
new file mode 100644
index 0000000..782362b
--- /dev/null
+++ b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-core/src/main/java/org/openecomp/sdc/logging/aspects/MetricsAspect.java
@@ -0,0 +1,70 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * SDC
+ * ================================================================================
+ * 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.sdc.logging.aspects;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.annotation.Around;
+import org.aspectj.lang.annotation.Aspect;
+import org.slf4j.Marker;
+import org.slf4j.MarkerFactory;
+
+/**
+ * <p>Wraps around any method annotated with {@link Metrics} to measure and log its execution time
+ * in milliseconds.</p>
+ * <p>In order for the aspect to be used, AspectJ annotation processing must be tuned on and this
+ * particular aspect enabled. Conversely, it can be disabled completely if the application does not
+ * need to log metrics.</p>
+ * <p>See, for example, <a href="http://docs.spring.io/spring/docs/current/spring-framework-reference/html/aop.html">
+ * Aspect Oriented Programming with Spring</a>.</p>
+ *
+ * @author evitaliy
+ * @see Metrics
+ * @since 27/07/2016.
+ */
+@Aspect
+public class MetricsAspect {
+
+ private static final String MESSAGE_TEMPLATE = "'{}' took {} milliseconds";
+ private static final Marker METRICS = MarkerFactory.getMarker("METRICS");
+
+ @Around("@annotation(org.openecomp.sdc.logging.api.annotations.Metrics)")
+ public Object logExecutionTime(ProceedingJoinPoint pjp) throws Throwable {
+
+ final Logger logger = LoggerFactory.getLogger(pjp.getSignature().getDeclaringTypeName());
+ // measure and log only if the logger for this class is enabled
+ if (logger.isInfoEnabled()) {
+
+ final String method = pjp.getSignature().getName();
+ final long start = System.currentTimeMillis();
+
+ try {
+ return pjp.proceed();
+ } finally {
+ logger.info(METRICS, MESSAGE_TEMPLATE, method, System.currentTimeMillis() - start);
+ }
+
+ } else {
+ return pjp.proceed();
+ }
+ }
+}
diff --git a/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-core/src/main/java/org/openecomp/sdc/logging/context/MDCPropagationService.java b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-core/src/main/java/org/openecomp/sdc/logging/context/MDCPropagationService.java
new file mode 100644
index 0000000..7e29f3c
--- /dev/null
+++ b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-core/src/main/java/org/openecomp/sdc/logging/context/MDCPropagationService.java
@@ -0,0 +1,74 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * SDC
+ * ================================================================================
+ * 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.sdc.logging.context;
+
+import org.openecomp.sdc.logging.api.context.ContextPropagationService;
+import org.slf4j.MDC;
+
+import java.util.Map;
+
+/**
+ * Propagates the <a href="http://www.slf4j.org/manual.html#mdc">SLF4J Mapped Diagnostic Context (MDC)</a>
+ * of a thread onto a runnable created by that thread, so that the context is available when the runnable is executed
+ * in a new thread.
+ *
+ * @author evitaliy
+ * @since 12/09/2016.
+ */
+public class MDCPropagationService implements ContextPropagationService {
+
+ public Runnable create(Runnable task) {
+ return new MDCCopyingWrapper(task);
+ }
+
+ private static class MDCCopyingWrapper implements Runnable {
+
+ private final Runnable task;
+ private final Map<String, String> context;
+
+ private MDCCopyingWrapper(Runnable task) {
+ this.task = task;
+ this.context = MDC.getCopyOfContextMap();
+ }
+
+ @Override
+ public void run() {
+
+ Map<String, String> oldContext = MDC.getCopyOfContextMap();
+ replaceMDC(this.context);
+
+ try {
+ task.run();
+ } finally {
+ replaceMDC(oldContext);
+ }
+ }
+
+ private static void replaceMDC(Map<String, String> context) {
+
+ if (context == null) {
+ MDC.clear();
+ } else {
+ MDC.setContextMap(context);
+ }
+ }
+ }
+}
diff --git a/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-core/src/main/java/org/openecomp/sdc/logging/context/MdcUtil.java b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-core/src/main/java/org/openecomp/sdc/logging/context/MdcUtil.java
new file mode 100644
index 0000000..24d4716
--- /dev/null
+++ b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-core/src/main/java/org/openecomp/sdc/logging/context/MdcUtil.java
@@ -0,0 +1,59 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * SDC
+ * ================================================================================
+ * 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.sdc.logging.context;
+
+import org.openecomp.sdc.logging.types.LoggerConstants;
+import org.slf4j.MDC;
+
+import java.util.UUID;
+
+
+public class MdcUtil {
+
+ /**
+ * Sets values for mdc.
+ *
+ * @param targetEntity the target entity
+ * @param targetServiceName the target service name
+ * @param errorCategory the error category
+ * @param errorCode the error code
+ * @param errorDescription the error description
+ */
+ public static void setValuesForMdc(String targetEntity, String targetServiceName,
+ String errorCategory, String errorCode,
+ String errorDescription) {
+ MDC.put(LoggerConstants.TARGET_ENTITY, targetEntity);
+ MDC.put(LoggerConstants.TARGET_SERVICE_NAME, targetServiceName);
+ MDC.put(LoggerConstants.ERROR_CATEGORY, errorCategory);
+ MDC.put(LoggerConstants.ERROR_CODE, errorCode);
+ MDC.put(LoggerConstants.ERROR_DESCRIPTION, errorDescription);
+ }
+
+
+ /**
+ * Init mdc.
+ * @param serviceName the service name
+ *
+ */
+ public static void initMdc(String serviceName) {
+ MDC.put(LoggerConstants.SERVICE_NAME, serviceName);
+ }
+}
diff --git a/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-core/src/main/java/org/openecomp/sdc/logging/context/impl/MdcDataDebugMessage.java b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-core/src/main/java/org/openecomp/sdc/logging/context/impl/MdcDataDebugMessage.java
new file mode 100644
index 0000000..01bc6f4
--- /dev/null
+++ b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-core/src/main/java/org/openecomp/sdc/logging/context/impl/MdcDataDebugMessage.java
@@ -0,0 +1,88 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * SDC
+ * ================================================================================
+ * 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.sdc.logging.context.impl;
+
+import org.openecomp.sdc.logging.api.Logger;
+import org.openecomp.sdc.logging.api.LoggerFactory;
+import org.openecomp.sdc.logging.context.MdcData;
+import org.openecomp.sdc.logging.messages.DebugMessages;
+import org.openecomp.sdc.logging.types.DebugConstants;
+import org.openecomp.sdc.logging.types.LoggerErrorCategory;
+import org.openecomp.sdc.logging.util.LoggingUtils;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class MdcDataDebugMessage extends MdcData {
+
+ private static Logger logger;
+ private static Map<String, String> mapExitOrEntryToMessage;
+
+ static {
+ mapExitOrEntryToMessage = new HashMap<>();
+ mapExitOrEntryToMessage.put(DebugConstants.ENTER, DebugMessages.ENTER_METHOD);
+ mapExitOrEntryToMessage.put(DebugConstants.ENTER_DEFAULT, DebugMessages.DEFAULT_ENTER_METHOD);
+ mapExitOrEntryToMessage.put(DebugConstants.EXIT, DebugMessages.EXIT_METHOD);
+ mapExitOrEntryToMessage.put(DebugConstants.EXIT_DEFAULT, DebugMessages.DEFAULT_EXIT_METHOD);
+ }
+
+ public MdcDataDebugMessage() {
+ super(LoggerErrorCategory.DEBUG.name(), null);
+ }
+
+ //todo add more explanations as to the first parameter structure in case of multiples and in
+ // case of no params in method
+ /**
+ * Debug entry message.
+ *
+ * @param entityParameter the entity parameter
+ * @param ids the ids
+ */
+ public void debugEntryMessage(String entityParameter, String... ids) {
+ logDebugMessage(entityParameter, DebugConstants.ENTER, ids);
+ }
+
+ /**
+ * Debug exit message.
+ *
+ * @param entityParameter the entity parameter
+ * @param ids the ids
+ */
+ public void debugExitMessage(String entityParameter, String... ids) {
+ logDebugMessage(entityParameter, DebugConstants.EXIT, ids);
+ }
+
+ public void logDebugMessage(String entityParameter, String enterOrExit, String... ids) {
+ String methodName = LoggingUtils.getCallingMethodNameForDebugging();
+ String declaringClass = LoggingUtils.getDeclaringClass();
+ logger = (Logger) LoggerFactory.getLogger(declaringClass);
+ String messageToWrite;
+
+ if (entityParameter == null || ids == null) {
+ messageToWrite = mapExitOrEntryToMessage.get(enterOrExit + "_" + DebugConstants.DEFAULT);
+ logger.debug(String.format(messageToWrite, methodName));
+ } else {
+ messageToWrite = mapExitOrEntryToMessage.get(enterOrExit);
+ logger.debug(String
+ .format(messageToWrite, methodName, entityParameter, String.join(",", ids)));
+ }
+ }
+}
diff --git a/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-core/src/main/java/org/openecomp/sdc/logging/context/impl/MdcDataErrorMessage.java b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-core/src/main/java/org/openecomp/sdc/logging/context/impl/MdcDataErrorMessage.java
new file mode 100644
index 0000000..190c37d
--- /dev/null
+++ b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-core/src/main/java/org/openecomp/sdc/logging/context/impl/MdcDataErrorMessage.java
@@ -0,0 +1,76 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * SDC
+ * ================================================================================
+ * 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.sdc.logging.context.impl;
+
+import org.openecomp.sdc.logging.context.MdcData;
+import org.openecomp.sdc.logging.types.LoggerConstants;
+import org.slf4j.MDC;
+
+
+public class MdcDataErrorMessage extends MdcData {
+ private String targetEntity;
+ private String targetServiceName;
+ private String errorDescription;
+
+ /**
+ * Instantiates a new Mdc data error message.
+ *
+ * @param targetEntity the target entity
+ * @param targetServiceName the target service name
+ * @param errorCategory the error category
+ * @param errorCode the error code
+ * @param errorDescription the error description
+ */
+ public MdcDataErrorMessage(String targetEntity, String targetServiceName, String errorCategory,
+ String errorCode, String errorDescription) {
+ super(errorCategory, errorCode);
+ this.targetEntity = targetEntity;
+ this.targetServiceName = targetServiceName;
+ this.errorDescription = errorDescription;
+
+ this.setMdcValues();
+ }
+
+ /**
+ * Create error message and update mdc.
+ *
+ * @param targetEntity the target entity
+ * @param targetServiceName the target service name
+ * @param level the level
+ * @param errorCode the error code
+ * @param errorDescription the error description
+ */
+ public static void createErrorMessageAndUpdateMdc(String targetEntity, String targetServiceName,
+ String level, String errorCode,
+ String errorDescription) {
+ MdcDataErrorMessage mdcDataErrorMessage =
+ new MdcDataErrorMessage(targetEntity, targetServiceName, level, errorCode,
+ errorDescription);
+ }
+
+ @Override
+ public void setMdcValues() {
+ super.setMdcValues();
+ MDC.put(LoggerConstants.TARGET_ENTITY, this.targetEntity);
+ MDC.put(LoggerConstants.TARGET_SERVICE_NAME, this.targetServiceName);
+ MDC.put(LoggerConstants.ERROR_DESCRIPTION, this.errorDescription);
+ }
+}
diff --git a/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-core/src/main/java/org/openecomp/sdc/logging/logback/DispatchingAppender.java b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-core/src/main/java/org/openecomp/sdc/logging/logback/DispatchingAppender.java
new file mode 100644
index 0000000..2273e1c
--- /dev/null
+++ b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-core/src/main/java/org/openecomp/sdc/logging/logback/DispatchingAppender.java
@@ -0,0 +1,148 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * SDC
+ * ================================================================================
+ * 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.sdc.logging.logback;
+
+import ch.qos.logback.classic.Logger;
+import ch.qos.logback.classic.LoggerContext;
+import ch.qos.logback.classic.sift.MDCBasedDiscriminator;
+import ch.qos.logback.classic.spi.ILoggingEvent;
+import ch.qos.logback.core.Appender;
+import ch.qos.logback.core.AppenderBase;
+import ch.qos.logback.core.joran.spi.DefaultClass;
+import ch.qos.logback.core.sift.Discriminator;
+import org.slf4j.LoggerFactory;
+
+import java.util.Iterator;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * <p>Allows to use EELF logging configuration almost as is, by using a custom routing function, but pre-configured
+ * appenders attached to the standard EELF loggers.</p>
+ *
+ * <p>Changes that must be made in <i>logback.xml</i> supplied with EELF:</p>
+ *
+ * <pre>
+ * <appender name="DISPATCHER" class="org.openecomp.sdc.logging.logback.DispatchingAppender">
+ * <discriminator class="org.openecomp.sdc.logging.logback.EventTypeDiscriminator"/>
+ * <appenderNamePattern>asyncEELF%s</appenderNamePattern>
+ * </appender>
+ *
+ * <root level="INFO" additivity="false">
+ * <appender-ref ref="DISPATCHER" />
+ * </root>
+ * </pre>
+ *
+ * @author EVITALIY
+ * @since 17/08/2016.
+ */
+public class DispatchingAppender extends AppenderBase<ILoggingEvent> {
+
+ // "magic" appender to indicate a missing appender
+ private static final Appender<ILoggingEvent> NO_APPENDER = new DispatchingAppender();
+
+ private Map<String, Appender<ILoggingEvent>> appenders = new ConcurrentHashMap<>();
+
+ private Discriminator<ILoggingEvent> discriminator;
+ private String appenderNamePattern;
+
+ @DefaultClass(MDCBasedDiscriminator.class)
+ public void setDiscriminator(Discriminator<ILoggingEvent> discriminator) {
+ this.discriminator = discriminator;
+ }
+
+ public Discriminator<ILoggingEvent> getDiscriminator() {
+ return this.discriminator;
+ }
+
+ public void setAppenderNamePattern(String pattern) {
+ this.appenderNamePattern = pattern;
+ }
+
+ public String getAppenderNamePattern() {
+ return this.appenderNamePattern;
+ }
+
+ @Override
+ protected void append(ILoggingEvent event) {
+
+ if (this.isStarted()) {
+
+ String discriminatingValue = this.discriminator.getDiscriminatingValue(event);
+ String appenderName = String.format(this.appenderNamePattern, discriminatingValue);
+ Appender<ILoggingEvent> appender = this.lookupAppender(appenderName);
+ if (appender == NO_APPENDER) {
+ this.addError(String.format("Appender %s does not exist", appenderName));
+ } else {
+ appender.doAppend(event);
+ }
+ }
+ }
+
+ private Appender<ILoggingEvent> lookupAppender(String key) {
+
+ Appender<ILoggingEvent> appender = appenders.get(key);
+ if (appender != null) {
+ return appender;
+ }
+
+ LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory();
+ for (Logger log : context.getLoggerList()) {
+
+ Iterator<Appender<ILoggingEvent>> iterator = log.iteratorForAppenders();
+ while (iterator.hasNext()) {
+
+ Appender<ILoggingEvent> element = iterator.next();
+ if (key.equals(element.getName())) {
+ this.appenders.putIfAbsent(key, element);
+ return element;
+ }
+ }
+ }
+
+ // to avoid consecutive lookups if the required appender does not exist
+ this.appenders.putIfAbsent(key, NO_APPENDER);
+ return NO_APPENDER;
+ }
+
+ @Override
+ public void start() {
+
+ int errors = 0;
+ if (this.discriminator == null) {
+ this.addError("Missing discriminator. Aborting");
+ }
+
+ if (!this.discriminator.isStarted()) {
+ this.addError("Discriminator has not started successfully. Aborting");
+ ++errors;
+ }
+
+ if (this.appenderNamePattern == null) {
+ this.addError("Missing name pattern. Aborting");
+ ++errors;
+ }
+
+ if (errors == 0) {
+ super.start();
+ }
+ }
+}
diff --git a/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-core/src/main/java/org/openecomp/sdc/logging/logback/EventTypeDiscriminator.java b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-core/src/main/java/org/openecomp/sdc/logging/logback/EventTypeDiscriminator.java
new file mode 100644
index 0000000..5aa3665
--- /dev/null
+++ b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-core/src/main/java/org/openecomp/sdc/logging/logback/EventTypeDiscriminator.java
@@ -0,0 +1,121 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * SDC
+ * ================================================================================
+ * 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.sdc.logging.logback;
+
+import ch.qos.logback.classic.Level;
+import ch.qos.logback.classic.spi.ILoggingEvent;
+import ch.qos.logback.core.sift.AbstractDiscriminator;
+import org.openecomp.sdc.logging.Markers;
+import org.slf4j.Marker;
+
+/**
+ * Can be used with {@link ch.qos.logback.classic.sift.SiftingAppender} to route events of different types to
+ * separate log files. For example,
+ *
+ * <pre>
+ * <configuration>
+ * <appender name="SIFT" class="ch.qos.logback.classic.sift.SiftingAppender">
+ * <discriminator class="org.openecomp.sdc.logging.logback.EventTypeDiscriminator"/>
+ * <sift>
+ * <appender name="{EventType}" class="ch.qos.logback.core.rolling.RollingFileAppender">
+ * <file>${logDirectory}/${eventType}.log</file>
+ * <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+ * <fileNamePattern>${logDirectory}/${eventType}.%i.log.zip</fileNamePattern>
+ * <minIndex>1</minIndex>
+ * <maxIndex>9</maxIndex>
+ * </rollingPolicy>
+ * <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+ * <maxFileSize>5MB</maxFileSize>
+ * </triggeringPolicy>
+ * <encoder>
+ * <pattern>${defaultPattern}</pattern>
+ * </encoder>
+ * </appender>
+ * </sift>
+ * </appender>
+ *
+ * <root level="INFO">
+ * <appender-ref ref="SIFT" />
+ * </root>
+ * </configuration>
+ * </pre>
+ *
+ * @author evitaliy
+ * @since 21/07/2016.
+ */
+public class EventTypeDiscriminator extends AbstractDiscriminator<ILoggingEvent> {
+
+ private static final String KEY = "eventType";
+
+ private static final String AUDIT = "Audit";
+ private static final String METRICS = "Metrics";
+ private static final String ERROR = "Error";
+ private static final String DEBUG = "Debug";
+ private static final String DEFAULT = DEBUG;
+
+ private static final int MIN_ERROR_LEVEL = Level.WARN_INT;
+ private static final int MAX_ERROR_LEVEL = Level.ERROR_INT;
+ private static final int DEFAULT_LEVEL = Level.DEBUG_INT;
+
+ @Override
+ public String getDiscriminatingValue(ILoggingEvent event) {
+
+ Level level = event.getLevel();
+ final int levelInt = level == null ? DEFAULT_LEVEL : level.toInt();
+ if ((levelInt > MIN_ERROR_LEVEL - 1) && (levelInt < MAX_ERROR_LEVEL + 1)) {
+ return ERROR;
+ }
+
+ if (levelInt == Level.DEBUG_INT) {
+ return DEBUG;
+ }
+
+ /*
+ * After DEBUG, ERROR, and WARNING have been filtered out,
+ * only TRACE and INFO are left. TRACE is less than DEBUG
+ * and therefore cannot be used. So, INFO should be used for
+ * custom routing like AUDIT and METRICS
+ */
+ if (levelInt == Level.INFO_INT) {
+
+ final Marker marker = event.getMarker();
+ if (marker != null) {
+
+ if (marker.contains(Markers.AUDIT)) {
+ return AUDIT;
+ }
+
+ if (marker.contains(Markers.METRICS)) {
+ return METRICS;
+ }
+ }
+
+ return ERROR;
+ }
+
+ return DEFAULT;
+ }
+
+ @Override
+ public String getKey() {
+ return KEY;
+ }
+}
diff --git a/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-core/src/main/java/org/openecomp/sdc/logging/method/LoggingInvocationHandler.java b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-core/src/main/java/org/openecomp/sdc/logging/method/LoggingInvocationHandler.java
new file mode 100644
index 0000000..8718445
--- /dev/null
+++ b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-core/src/main/java/org/openecomp/sdc/logging/method/LoggingInvocationHandler.java
@@ -0,0 +1,45 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * SDC
+ * ================================================================================
+ * 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.sdc.logging.method;
+
+import org.openecomp.sdc.logging.context.impl.MdcDataDebugMessage;
+
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+
+/**
+ * Created by TALIO on 1/8/2017.
+ */
+public class LoggingInvocationHandler implements InvocationHandler {
+
+ private static MdcDataDebugMessage mdcDataDebugMessage = new MdcDataDebugMessage();
+ private final Object invocImpl;
+
+ public LoggingInvocationHandler(final Object invocImpl){
+ this.invocImpl = invocImpl;
+ }
+
+ @Override
+ public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
+ mdcDataDebugMessage.debugEntryMessage(null, null);
+ return method.invoke(invocImpl, args);
+ }
+}
diff --git a/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-core/src/main/java/org/openecomp/sdc/logging/servlet/LoggingFilter.java b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-core/src/main/java/org/openecomp/sdc/logging/servlet/LoggingFilter.java
new file mode 100644
index 0000000..f617ea6
--- /dev/null
+++ b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-core/src/main/java/org/openecomp/sdc/logging/servlet/LoggingFilter.java
@@ -0,0 +1,139 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * SDC
+ * ================================================================================
+ * 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.sdc.logging.servlet;
+
+import org.omg.CORBA.Request;
+import org.slf4j.MDC;
+
+import javax.servlet.*;
+import javax.servlet.http.HttpServletRequest;
+import java.io.IOException;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.util.UUID;
+import java.util.concurrent.atomic.AtomicLong;
+
+
+/**
+ *
+ * <p>Pushes information required by EELF onto MDC (Mapped Diagnostic Context).</p>
+ *
+ * <p>This is servlet filter that should be configured in <i>web.xml</i> to be used. Example:</p>
+ *
+ * <pre>
+ *
+ * <filter>
+ * <filter-name>LoggingServletFilter</filter-name>
+ * <filter-class>org.openecomp.sdc.logging.servlet.LoggingFilter</filter-class>
+ * </filter>
+ *
+ * <filter-mapping>
+ * <filter-name>LoggingServletFilter</filter-name>
+ * <url-pattern>/*</url-pattern>
+ * </filter-mapping>
+ *
+ * </pre>
+ *
+ * @author evitaliy
+ * @since 25/07/2016.
+ */
+public class LoggingFilter implements Filter {
+
+ // should be cashed to avoid low-level call, but with a timeout to account for IP or FQDN changes
+ private static final HostAddressCache HOST_ADDRESS = new HostAddressCache();
+ private static final String UNKNOWN = "UNKNOWN";
+
+ public void destroy() {
+ }
+
+ public void doFilter(ServletRequest request, ServletResponse response,
+ FilterChain chain) throws IOException, ServletException {
+
+ try {
+
+ MDC.clear();
+
+ MDC.put("RequestId", UUID.randomUUID().toString());
+ MDC.put("ServiceInstanceId", "N/A"); // not applicable
+ MDC.put("ServiceName", "ASDC");
+ MDC.put("InstanceUUID", "N/A");
+
+ // For some reason chooses IPv4 or IPv6 in a random way
+ MDC.put("RemoteHost", request.getRemoteHost());
+
+ InetAddress host = HOST_ADDRESS.get();
+
+ String ipAddress, hostName;
+ if (host == null) {
+ ipAddress = UNKNOWN;
+ hostName = UNKNOWN;
+ } else {
+ ipAddress = host.getHostAddress();
+ hostName = host.getHostName();
+ }
+
+ MDC.put("ServerIPAddress", ipAddress);
+ MDC.put("ServerFQDN", hostName);
+
+ if(request instanceof HttpServletRequest) {
+ String userName = ((HttpServletRequest) request).getHeader("USER_ID");
+ MDC.put("PartnerName", userName);
+ }
+ // TODO: Clarify what these stand for
+ // MDC.put("AlertSeverity", );
+ // MDC.put("Timer", );
+
+ chain.doFilter(request, response);
+
+ } finally {
+ MDC.clear();
+ }
+ }
+
+ public void init(FilterConfig config) throws ServletException { }
+
+ private static class HostAddressCache {
+
+ private static final long REFRESH_TIME = 1000L;
+
+ private AtomicLong lastUpdated = new AtomicLong(0L);
+ private InetAddress hostAddress;
+
+ public InetAddress get() {
+
+ long current = System.currentTimeMillis();
+ if (current - lastUpdated.get() > REFRESH_TIME) {
+
+ synchronized (this) {
+
+ try {
+ lastUpdated.set(current); // set now to register the attempt even if failed
+ hostAddress = InetAddress.getLocalHost();
+ } catch (UnknownHostException e) {
+ hostAddress = null;
+ }
+ }
+ }
+
+ return hostAddress;
+ }
+ }
+}
diff --git a/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-core/src/main/java/org/openecomp/sdc/logging/util/LoggingUtils.java b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-core/src/main/java/org/openecomp/sdc/logging/util/LoggingUtils.java
new file mode 100644
index 0000000..06b0d5b
--- /dev/null
+++ b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-core/src/main/java/org/openecomp/sdc/logging/util/LoggingUtils.java
@@ -0,0 +1,35 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * SDC
+ * ================================================================================
+ * 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.sdc.logging.util;
+
+/**
+ * Created by TALIO on 1/10/2017.
+ */
+public class LoggingUtils {
+
+ public static String getCallingMethodNameForDebugging() {
+ return Thread.currentThread().getStackTrace()[4].getMethodName();
+ }
+
+ public static String getDeclaringClass(){
+ return Thread.currentThread().getStackTrace()[4].getClassName();
+ }
+}
diff --git a/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-core/src/main/resources/META-INF/services/org.openecomp.sdc.logging.api.LoggerCreationService b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-core/src/main/resources/META-INF/services/org.openecomp.sdc.logging.api.LoggerCreationService
new file mode 100644
index 0000000..ee01c4d
--- /dev/null
+++ b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-core/src/main/resources/META-INF/services/org.openecomp.sdc.logging.api.LoggerCreationService
@@ -0,0 +1 @@
+org.openecomp.sdc.logging.SLF4JLoggerCreationService
\ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-core/src/main/resources/META-INF/services/org.openecomp.sdc.logging.api.context.ContextPropagationService b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-core/src/main/resources/META-INF/services/org.openecomp.sdc.logging.api.context.ContextPropagationService
new file mode 100644
index 0000000..2c40161
--- /dev/null
+++ b/openecomp-be/lib/openecomp-logging-lib/openecomp-sdc-logging-core/src/main/resources/META-INF/services/org.openecomp.sdc.logging.api.context.ContextPropagationService
@@ -0,0 +1 @@
+org.openecomp.sdc.logging.context.MDCPropagationService
\ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-logging-lib/pom.xml b/openecomp-be/lib/openecomp-logging-lib/pom.xml
new file mode 100644
index 0000000..e41b686
--- /dev/null
+++ b/openecomp-be/lib/openecomp-logging-lib/pom.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>org.openecomp.sdc</groupId>
+ <name>openecomp-logging-lib</name>
+ <artifactId>openecomp-logging-lib</artifactId>
+ <packaging>pom</packaging>
+
+ <parent>
+ <groupId>org.openecomp.sdc</groupId>
+ <artifactId>openecomp-sdc-lib</artifactId>
+ <version>1.1.0-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+
+ <modules>
+ <module>/openecomp-sdc-logging-api</module>
+ <module>/openecomp-sdc-logging-core</module>
+ </modules>
+
+
+</project>
diff --git a/openecomp-be/lib/openecomp-logging-lib/pom.xml.versionsBackup b/openecomp-be/lib/openecomp-logging-lib/pom.xml.versionsBackup
new file mode 100644
index 0000000..7765713
--- /dev/null
+++ b/openecomp-be/lib/openecomp-logging-lib/pom.xml.versionsBackup
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.openecomp.sdc</groupId>
+ <artifactId>openecomp-sdc-lib</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ </parent>
+
+ <groupId>org.openecomp.sdc</groupId>
+ <name>openecomp-logging-lib</name>
+ <artifactId>openecomp-logging-lib</artifactId>
+ <packaging>pom</packaging>
+
+ <modules>
+ <module>/openecomp-sdc-logging-api</module>
+ <module>/openecomp-sdc-logging-core</module>
+ </modules>
+
+
+</project>
\ No newline at end of file