You can achieve this using ClientHttpRequestInterceptor in Spring. You must override the method to intercept the ClientHttpRequestInterceptor interface.
The following is a snippet of code:
@Component public class LogRequestResponseFilter implements ClientHttpRequestInterceptor { private static final Logger logger=LoggerFactory.getLogger(LogRequestResponseFilter.class); @Override public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution) throws IOException { traceRequest(request, body); ClientHttpResponse clientHttpResponse = execution.execute(request, body); traceResponse(clientHttpResponse); return clientHttpResponse; } private void traceRequest(HttpRequest request, byte[] body) throws IOException { logger.debug("request URI : " + request.getURI()); logger.debug("request method : " + request.getMethod()); logger.debug("request body : " + getRequestBody(body)); } private String getRequestBody(byte[] body) throws UnsupportedEncodingException { if (body != null && body.length > 0) { return (new String(body, "UTF-8")); } else { return null; } } private void traceResponse(ClientHttpResponse response) throws IOException { String body = getBodyString(response); logger.debug("response status code: " + response.getStatusCode()); logger.debug("response status text: " + response.getStatusText()); logger.debug("response body : " + body); } private String getBodyString(ClientHttpResponse response) { try { if (response != null && response.getBody() != null) {
S boot
source share