diff options
Diffstat (limited to 'openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-core/src/main')
2 files changed, 64 insertions, 25 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); } |