diff options
author | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2020-01-29 17:12:24 +0100 |
---|---|---|
committer | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2020-01-29 17:12:24 +0100 |
commit | 6df641688fed097505d3e675960b49d7162c6828 (patch) | |
tree | 8d2fcca0ca76cf373c0946f61b379897c5a5f557 /jdisc-security-filters/src | |
parent | 79bd9b2122efb99805d89e89a0354f70161420ed (diff) |
Add debug logging of error responses
Diffstat (limited to 'jdisc-security-filters/src')
-rw-r--r-- | jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/base/JsonSecurityRequestFilterBase.java | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/base/JsonSecurityRequestFilterBase.java b/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/base/JsonSecurityRequestFilterBase.java index ec8a93019b0..e654182d665 100644 --- a/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/base/JsonSecurityRequestFilterBase.java +++ b/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/base/JsonSecurityRequestFilterBase.java @@ -10,9 +10,11 @@ import com.yahoo.jdisc.handler.ResponseDispatch; import com.yahoo.jdisc.handler.ResponseHandler; import com.yahoo.jdisc.http.filter.DiscFilterRequest; import com.yahoo.jdisc.http.filter.SecurityRequestFilter; +import com.yahoo.log.LogLevel; import java.io.UncheckedIOException; import java.util.Optional; +import java.util.logging.Logger; /** * A base class for {@link SecurityRequestFilter} implementations that renders an error response as JSON. @@ -21,22 +23,25 @@ import java.util.Optional; */ public abstract class JsonSecurityRequestFilterBase implements SecurityRequestFilter { + private static final Logger log = Logger.getLogger(JsonSecurityRequestFilterBase.class.getName()); private static final ObjectMapper mapper = new ObjectMapper(); @Override public final void filter(DiscFilterRequest request, ResponseHandler handler) { filter(request) - .ifPresent(errorResponse -> writeResponse(errorResponse, handler)); + .ifPresent(errorResponse -> writeResponse(request, errorResponse, handler)); } protected abstract Optional<ErrorResponse> filter(DiscFilterRequest request); - private void writeResponse(ErrorResponse error, ResponseHandler responseHandler) { + private void writeResponse(DiscFilterRequest request, ErrorResponse error, ResponseHandler responseHandler) { ObjectNode errorMessage = mapper.createObjectNode(); errorMessage.put("code", error.errorCode); errorMessage.put("message", error.message); error.response.headers().put("Content-Type", "application/json"); // Note: Overwrites header if already exists error.response.headers().put("Cache-Control", "must-revalidate,no-cache,no-store"); + log.log(LogLevel.DEBUG, () -> String.format("Error response for '%s': statusCode=%d, errorCode=%d, message='%s'", + request, error.response.getStatus(), error.errorCode, error.message)); try (FastContentWriter writer = ResponseDispatch.newInstance(error.response).connectFastWriter(responseHandler)) { writer.write(mapper.writerWithDefaultPrettyPrinter().writeValueAsString(errorMessage)); } catch (JsonProcessingException e) { |