diff options
author | olegb <olegb@amdocs.com> | 2018-02-19 16:11:35 +0200 |
---|---|---|
committer | Vitaly Emporopulo <Vitaliy.Emporopulo@amdocs.com> | 2018-03-04 09:31:51 +0000 |
commit | 313dce44ae1ab2328c33a6448e87b3fbb81b15f0 (patch) | |
tree | 6957ccea17705639cc4b5b278e57252a2e677f58 /openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-core | |
parent | f86741b693d54f0cb074028c484835f42c991923 (diff) |
Changed audit API of logger
Change-Id: I3e091ba7ce592fae536da1eaf28a220284b846c3
Issue-ID: SDC-772
Signed-off-by: olegb <olegb@amdocs.com>
Diffstat (limited to 'openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-core')
-rw-r--r-- | openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-core/src/main/java/org/openecomp/sdc/logging/slf4j/SLF4JLoggerWrapper.java | 70 | ||||
-rw-r--r-- | openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-core/src/main/java/org/openecomp/sdc/logging/slf4j/SLF4JLoggingServiceProvider.java | 19 | ||||
-rw-r--r-- | openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-core/src/test/java/org/openecomp/sdc/logging/LogFileCreationTest.java (renamed from openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-core/src/test/java/org/openecomp/sdc/logging/api/LoggerTest.java) | 64 | ||||
-rw-r--r-- | openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-core/src/test/java/org/openecomp/sdc/logging/aspects/MetricsAspectTest.java | 23 |
4 files changed, 118 insertions, 58 deletions
diff --git a/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-core/src/main/java/org/openecomp/sdc/logging/slf4j/SLF4JLoggerWrapper.java b/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-core/src/main/java/org/openecomp/sdc/logging/slf4j/SLF4JLoggerWrapper.java index 5d223450bd..416af8fff1 100644 --- a/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-core/src/main/java/org/openecomp/sdc/logging/slf4j/SLF4JLoggerWrapper.java +++ b/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-core/src/main/java/org/openecomp/sdc/logging/slf4j/SLF4JLoggerWrapper.java @@ -1,5 +1,5 @@ /* - * Copyright © 2016-2017 European Support Limited + * Copyright © 2016-2018 European Support Limited * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,8 +16,15 @@ package org.openecomp.sdc.logging.slf4j; +import org.openecomp.sdc.logging.api.AuditData; import org.openecomp.sdc.logging.api.Logger; import org.slf4j.LoggerFactory; +import org.slf4j.MDC; + +import java.text.SimpleDateFormat; +import java.util.Date; + +import static org.openecomp.sdc.logging.slf4j.SLF4JLoggingServiceProvider.PREFIX; /** * @author EVITALIY @@ -25,6 +32,16 @@ import org.slf4j.LoggerFactory; */ class SLF4JLoggerWrapper implements Logger { + private static final String BEGIN_TIMESTAMP = PREFIX + "BeginTimestamp"; + private static final String END_TIMESTAMP = PREFIX + "EndTimestamp"; + private static final String ELAPSED_TIME = PREFIX + "ElapsedTime"; + private static final String STATUS_CODE = PREFIX + "StatusCode"; + private static final String RESPONSE_CODE = PREFIX + "ResponseCode"; + private static final String RESPONSE_DESCRIPTION = PREFIX + "ResponsDescription"; + private static final String CLIENT_IP_ADDRESS = PREFIX + "ClientIpAddress"; + + //The specified format presents time in UTC formatted per ISO 8601, as required by ONAP logging guidelines + private final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX"); private final org.slf4j.Logger logger; SLF4JLoggerWrapper(Class<?> clazz) { @@ -76,28 +93,43 @@ class SLF4JLoggerWrapper implements Logger { } @Override - public void audit(String msg) { - logger.info(Markers.AUDIT, msg); - } + public void audit(AuditData data) { - @Override - public void audit(String msg, Object arg) { - logger.info(Markers.AUDIT, msg, arg); - } + if (data == null) { + return; + } - @Override - public void audit(String msg, Object arg1, Object arg2) { - logger.info(Markers.AUDIT, msg, arg1, arg2); - } + MDC.put(BEGIN_TIMESTAMP, DATE_FORMAT.format(new Date(data.getStartTime()))); + MDC.put(END_TIMESTAMP, DATE_FORMAT.format(new Date(data.getEndTime()))); + MDC.put(ELAPSED_TIME, String.valueOf(data.getEndTime() - data.getStartTime())); - @Override - public void audit(String msg, Object... arguments) { - logger.info(Markers.AUDIT, msg, arguments); - } + if (data.getStatusCode() != null) { + MDC.put(STATUS_CODE, data.getStatusCode() == AuditData.StatusCode.COMPLETE ? "COMPLETE" : "ERROR"); + } - @Override - public void audit(String msg, Throwable t) { - logger.info(Markers.AUDIT, msg, t); + if (data.getResponseCode() != null) { + MDC.put(RESPONSE_CODE, data.getResponseCode()); + } + + if (data.getResponseDescription() != null) { + MDC.put(RESPONSE_DESCRIPTION, data.getResponseDescription()); + } + + if (data.getClientIpAddress() != null) { + MDC.put(CLIENT_IP_ADDRESS, data.getClientIpAddress()); + } + + try { + logger.info(Markers.AUDIT, ""); + } finally { + MDC.remove(BEGIN_TIMESTAMP); + MDC.remove(END_TIMESTAMP); + MDC.remove(ELAPSED_TIME); + MDC.remove(STATUS_CODE); + MDC.remove(RESPONSE_CODE); + MDC.remove(RESPONSE_DESCRIPTION); + MDC.remove(CLIENT_IP_ADDRESS); + } } @Override diff --git a/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-core/src/main/java/org/openecomp/sdc/logging/slf4j/SLF4JLoggingServiceProvider.java b/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-core/src/main/java/org/openecomp/sdc/logging/slf4j/SLF4JLoggingServiceProvider.java index d2fb0b0226..86b2297371 100644 --- a/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-core/src/main/java/org/openecomp/sdc/logging/slf4j/SLF4JLoggingServiceProvider.java +++ b/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-core/src/main/java/org/openecomp/sdc/logging/slf4j/SLF4JLoggingServiceProvider.java @@ -1,12 +1,12 @@ /* - * Copyright © 2016-2017 European Support Limited + * Copyright © 2016-2018 European Support Limited * * 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. @@ -16,20 +16,25 @@ package org.openecomp.sdc.logging.slf4j; +import java.util.Objects; +import java.util.concurrent.Callable; import org.openecomp.sdc.logging.api.Logger; import org.openecomp.sdc.logging.spi.LoggingServiceProvider; import org.slf4j.MDC; -import java.util.Objects; -import java.util.concurrent.Callable; - /** * @author evitaliy * @since 13/09/2016. */ public class SLF4JLoggingServiceProvider implements LoggingServiceProvider { + public static final String PREFIX = ""; private static final String KEY_CANNOT_BE_NULL = "Key cannot be null"; + private static final String REQUEST_ID = PREFIX + "RequestId"; + private static final String SERVICE_NAME = PREFIX + "ServiceName"; + private static final String PARTNER_NAME = PREFIX + "PartnerName"; + + private static final String[] ALL_FIELDS = { REQUEST_ID, SERVICE_NAME, PARTNER_NAME }; @Override public Logger getLogger(String className) { @@ -69,12 +74,14 @@ public class SLF4JLoggingServiceProvider implements LoggingServiceProvider { @Override public Runnable copyToRunnable(Runnable runnable) { Objects.requireNonNull(runnable, "Runnable cannot be null"); + // TODO: Copy only the fields this service is responsible for return new MDCRunnableWrapper(runnable); } @Override public <V> Callable<V> copyToCallable(Callable<V> callable) { Objects.requireNonNull(callable, "Runnable cannot be null"); + // TODO: Copy only the fields this service is responsible for return new MDCCallableWrapper<>(callable); } diff --git a/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-core/src/test/java/org/openecomp/sdc/logging/api/LoggerTest.java b/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-core/src/test/java/org/openecomp/sdc/logging/LogFileCreationTest.java index 1359a1ff2a..4595e567c8 100644 --- a/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-core/src/test/java/org/openecomp/sdc/logging/api/LoggerTest.java +++ b/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-core/src/test/java/org/openecomp/sdc/logging/LogFileCreationTest.java @@ -1,5 +1,5 @@ /* - * Copyright © 2016-2017 European Support Limited + * Copyright © 2016-2018 European Support Limited * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,20 +14,16 @@ * limitations under the License. */ -package org.openecomp.sdc.logging.api; +package org.openecomp.sdc.logging; +import org.openecomp.sdc.logging.api.AuditData; +import org.openecomp.sdc.logging.api.Logger; +import org.openecomp.sdc.logging.api.LoggerFactory; import org.testng.annotations.Test; -/** - * This is only for manual testing - change {@link #ENABLED} to 'true' - * - * @author evitaliy - * @since 13/09/2016. - */ -public class LoggerTest { - +public class LogFileCreationTest { private static final boolean ENABLED = false; // for manual testing change to 'true' - private static final Logger LOGGER = LoggerFactory.getLogger(LoggerTest.class); + private static final Logger LOGGER = LoggerFactory.getLogger(LogFileCreationTest.class); @Test(enabled = ENABLED) public void testMetrics() { @@ -36,7 +32,8 @@ public class LoggerTest { @Test(enabled = ENABLED) public void testAudit() { - LOGGER.audit("This is audit"); + SpyAuditData auditData = new SpyAuditData(); + LOGGER.audit(auditData); } @Test(enabled = ENABLED) @@ -58,4 +55,47 @@ public class LoggerTest { public void testError() { LOGGER.error("This is error"); } + + private class SpyAuditData implements AuditData { + @Override + public long getStartTime() { + + return 0; + + } + + @Override + public long getEndTime(){ + + return 0; + } + + @Override + public StatusCode getStatusCode(){ + + return null; + + } + + @Override + public String getResponseCode(){ + + return null; + + } + + @Override + public String getResponseDescription(){ + + return null; + + } + + @Override + public String getClientIpAddress(){ + + return null; + + } + } } diff --git a/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-core/src/test/java/org/openecomp/sdc/logging/aspects/MetricsAspectTest.java b/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-core/src/test/java/org/openecomp/sdc/logging/aspects/MetricsAspectTest.java index 42cbdcef14..4d3d6be34b 100644 --- a/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-core/src/test/java/org/openecomp/sdc/logging/aspects/MetricsAspectTest.java +++ b/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-core/src/test/java/org/openecomp/sdc/logging/aspects/MetricsAspectTest.java @@ -21,6 +21,7 @@ import org.aspectj.lang.Signature; import org.aspectj.lang.reflect.SourceLocation; import org.aspectj.runtime.internal.AroundClosure; import org.easymock.EasyMock; +import org.openecomp.sdc.logging.api.AuditData; import org.openecomp.sdc.logging.api.Logger; import org.openecomp.sdc.logging.api.LoggerFactory; import org.powermock.api.easymock.PowerMock; @@ -296,27 +297,7 @@ public class MetricsAspectTest extends PowerMockTestCase { } @Override - public void audit(String var1) { - throw new RuntimeException("Not implemented"); - } - - @Override - public void audit(String var1, Object var2) { - throw new RuntimeException("Not implemented"); - } - - @Override - public void audit(String var1, Object var2, Object var3) { - throw new RuntimeException("Not implemented"); - } - - @Override - public void audit(String var1, Object... var2) { - throw new RuntimeException("Not implemented"); - } - - @Override - public void audit(String var1, Throwable throwable) { + public void audit(AuditData var1) { throw new RuntimeException("Not implemented"); } |