From 1a39ab8be143ff2b412500e7a9480e4f534614b8 Mon Sep 17 00:00:00 2001 From: Brede Fritjof Klausen Date: Tue, 13 Aug 2024 16:04:30 +0200 Subject: [PATCH] [FOR-4925] New annotation, only lof response and not request --- .../util/servicebuilder/log/ServerLogFilter.java | 4 +--- .../util/servicebuilder/log/ServerLogger.java | 7 ++++++- .../util/servicebuilder/log/model/LogParams.java | 16 ++++++++++++++-- .../annotations/LogOnlyResponse.java | 12 ++++++++++++ 4 files changed, 33 insertions(+), 6 deletions(-) create mode 100644 servicebuilder-interfaces/src/main/java/no/obos/util/servicebuilder/annotations/LogOnlyResponse.java diff --git a/servicebuilder-core-addons/src/main/java/no/obos/util/servicebuilder/log/ServerLogFilter.java b/servicebuilder-core-addons/src/main/java/no/obos/util/servicebuilder/log/ServerLogFilter.java index 95cc16c2..865ed1ff 100644 --- a/servicebuilder-core-addons/src/main/java/no/obos/util/servicebuilder/log/ServerLogFilter.java +++ b/servicebuilder-core-addons/src/main/java/no/obos/util/servicebuilder/log/ServerLogFilter.java @@ -79,7 +79,7 @@ public void filter(ContainerRequestContext request) throws IOException { LogParams logParams = serverLogger.LogParamsForCall(handlingClass, handlingMethod); - if (! logParams.enableLogging) { + if (! logParams.enableLogging || logParams.logOnlyResponse) { return; } @@ -113,8 +113,6 @@ public void filter(ContainerRequestContext request) throws IOException { logRequest.headers((ImmutableMap.copyOf(headers))); } - - if (logParams.logRequestPayload) { logRequest.entity(extractRequestEntity(request)); } diff --git a/servicebuilder-core-addons/src/main/java/no/obos/util/servicebuilder/log/ServerLogger.java b/servicebuilder-core-addons/src/main/java/no/obos/util/servicebuilder/log/ServerLogger.java index 83f2b763..6198c5b7 100644 --- a/servicebuilder-core-addons/src/main/java/no/obos/util/servicebuilder/log/ServerLogger.java +++ b/servicebuilder-core-addons/src/main/java/no/obos/util/servicebuilder/log/ServerLogger.java @@ -8,6 +8,7 @@ import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import no.obos.util.servicebuilder.annotations.Log; +import no.obos.util.servicebuilder.annotations.LogOnlyResponse; import no.obos.util.servicebuilder.annotations.LogRequestEntity; import no.obos.util.servicebuilder.annotations.LogResponseEntity; import no.obos.util.servicebuilder.log.model.LogParams; @@ -44,6 +45,11 @@ public LogParams LogParamsForCall(Class clazz, Method method) { ret = ret.enableLogging(enableLogging.value()); } + LogOnlyResponse logOnlyResponse = AnnotationUtil.getAnnotation(LogOnlyResponse.class, method); + if (logOnlyResponse != null) { + ret = ret.logOnlyResponse(logOnlyResponse.value()); + } + LogRequestEntity logRequestEntity = AnnotationUtil.getAnnotation(LogRequestEntity.class, method); if (logRequestEntity != null) { ret = ret.logRequestPayload(logRequestEntity.value()); @@ -54,7 +60,6 @@ public LogParams LogParamsForCall(Class clazz, Method method) { ret = ret.logResponseEntity(logResponseEntity.value()); } return ret; - } public void handleRequest(LogRequest logRequest, LogParams logParams) { diff --git a/servicebuilder-core-addons/src/main/java/no/obos/util/servicebuilder/log/model/LogParams.java b/servicebuilder-core-addons/src/main/java/no/obos/util/servicebuilder/log/model/LogParams.java index 83f815a8..b6aa283b 100644 --- a/servicebuilder-core-addons/src/main/java/no/obos/util/servicebuilder/log/model/LogParams.java +++ b/servicebuilder-core-addons/src/main/java/no/obos/util/servicebuilder/log/model/LogParams.java @@ -50,7 +50,14 @@ public class LogParams { @Wither(AccessLevel.PRIVATE) public final boolean logRequestPayload; - public final static LogParams defaults = new LogParams(true, LogLevel.INFO, false, ImmutableSet.of(), true, true); + /** + * default er false, og om det er false logges request og response. + * Om det er true, logges kun response + */ + @Wither(AccessLevel.PRIVATE) + public final boolean logOnlyResponse; + + public static final LogParams defaults = new LogParams(true, LogLevel.INFO, false, ImmutableSet.of(), true, true, false); public LogParams enableLogging(boolean enableLogging) { return withEnableLogging(enableLogging); @@ -65,7 +72,7 @@ public LogParams logHeaders(boolean logHeaders) { } public LogParams skipHeaders(ImmutableSet skipHeaders) { - return this.skipHeaders == skipHeaders ? this : new LogParams(this.enableLogging, this.logLevel, this.logHeaders, skipHeaders, this.logResponseEntity, this.logRequestPayload); + return this.skipHeaders == skipHeaders ? this : new LogParams(this.enableLogging, this.logLevel, this.logHeaders, skipHeaders, this.logResponseEntity, this.logRequestPayload, this.logOnlyResponse); } public LogParams clearSkipHeaders() { @@ -83,4 +90,9 @@ public LogParams logResponseEntity(boolean logResponseEntity) { public LogParams logRequestPayload(boolean logRequestPayload) { return withLogRequestPayload(logRequestPayload); } + + public LogParams logOnlyResponse(boolean logOnlyResponse) { + return withLogOnlyResponse(logOnlyResponse); + } + } diff --git a/servicebuilder-interfaces/src/main/java/no/obos/util/servicebuilder/annotations/LogOnlyResponse.java b/servicebuilder-interfaces/src/main/java/no/obos/util/servicebuilder/annotations/LogOnlyResponse.java new file mode 100644 index 00000000..ed0cd15a --- /dev/null +++ b/servicebuilder-interfaces/src/main/java/no/obos/util/servicebuilder/annotations/LogOnlyResponse.java @@ -0,0 +1,12 @@ +package no.obos.util.servicebuilder.annotations; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.METHOD) +public @interface LogOnlyResponse { + boolean value() default false; +}