diff --git a/service/src/main/java/uk/nhs/adaptors/gpc/consumer/sds/SdsClient.java b/service/src/main/java/uk/nhs/adaptors/gpc/consumer/sds/SdsClient.java index 0557f483..d2dc99d4 100644 --- a/service/src/main/java/uk/nhs/adaptors/gpc/consumer/sds/SdsClient.java +++ b/service/src/main/java/uk/nhs/adaptors/gpc/consumer/sds/SdsClient.java @@ -161,7 +161,8 @@ private String getAddressFromEndpoint(Endpoint endpoint) { private Mono performRequest(RequestHeadersSpec> request) { return request.retrieve() - .bodyToMono(String.class); + .bodyToMono(String.class) + .doOnError(e -> LOGGER.error("SDS request failed: {}", e)); } @Builder diff --git a/service/src/main/java/uk/nhs/adaptors/gpc/consumer/sds/builder/SdsRequestBuilder.java b/service/src/main/java/uk/nhs/adaptors/gpc/consumer/sds/builder/SdsRequestBuilder.java index adcd6852..134951a4 100644 --- a/service/src/main/java/uk/nhs/adaptors/gpc/consumer/sds/builder/SdsRequestBuilder.java +++ b/service/src/main/java/uk/nhs/adaptors/gpc/consumer/sds/builder/SdsRequestBuilder.java @@ -171,7 +171,8 @@ private HttpClient getHttpClient() { } private void addWebClientFilters(List filters) { - filters.add(webClientFilterService.errorHandlingFilter(WebClientFilterService.RequestType.SDS, HttpStatus.OK)); filters.add(webClientFilterService.logRequest()); + filters.add(webClientFilterService.errorHandlingFilter(WebClientFilterService.RequestType.SDS, HttpStatus.OK)); + filters.add(webClientFilterService.logResponse()); } } diff --git a/service/src/main/java/uk/nhs/adaptors/gpc/consumer/web/WebClientFilterService.java b/service/src/main/java/uk/nhs/adaptors/gpc/consumer/web/WebClientFilterService.java index 78e08e3c..67c502d2 100644 --- a/service/src/main/java/uk/nhs/adaptors/gpc/consumer/web/WebClientFilterService.java +++ b/service/src/main/java/uk/nhs/adaptors/gpc/consumer/web/WebClientFilterService.java @@ -43,16 +43,24 @@ public ExchangeFilterFunction errorHandlingFilter(RequestType requestType, HttpS public ExchangeFilterFunction logRequest() { return (clientRequest, next) -> { + LOGGER.info("Outbound request: {} {}", clientRequest.method(), clientRequest.url()); if (LOGGER.isDebugEnabled()) { var headers = clientRequest.headers().entrySet().stream() .map(e -> e.getKey() + ": " + e.getValue()) .collect(Collectors.joining(System.lineSeparator())); - LOGGER.debug("Request: {} {} \n{}", clientRequest.method(), clientRequest.url(), headers); + LOGGER.debug("Outbound request headers for {} {}:\n{}", clientRequest.method(), clientRequest.url(), headers); } return next.exchange(clientRequest); }; } + public ExchangeFilterFunction logResponse() { + return ExchangeFilterFunction.ofResponseProcessor(clientResponse -> { + LOGGER.info("Outbound response status: {}", clientResponse.statusCode()); + return Mono.just(clientResponse); + }); + } + private Mono getResponseError(ClientResponse clientResponse, RequestType requestType) { var exceptionBuilder = REQUEST_TYPE_TO_EXCEPTION_MAP .getOrDefault(requestType, InvalidOutboundMessageException::new);