generated from 2martens/template-service
53 lines
1.6 KiB
Java
53 lines
1.6 KiB
Java
package de.twomartens.templateservice.interceptors;
|
|
|
|
import lombok.NoArgsConstructor;
|
|
import org.slf4j.MDC;
|
|
import org.springframework.http.HttpRequest;
|
|
import org.springframework.http.client.ClientHttpRequestExecution;
|
|
import org.springframework.http.client.ClientHttpRequestInterceptor;
|
|
import org.springframework.http.client.ClientHttpResponse;
|
|
import org.springframework.stereotype.Component;
|
|
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
import javax.servlet.http.HttpServletResponse;
|
|
import java.io.IOException;
|
|
|
|
/**
|
|
* marks requests of certain types like health check or integration test for better logging
|
|
*/
|
|
@Component
|
|
@NoArgsConstructor
|
|
public class RequestTypeInterceptor extends HandlerInterceptorAdapter
|
|
implements ClientHttpRequestInterceptor {
|
|
|
|
private static final String LOGGER_ID = "REQTYPE";
|
|
private static final String HEADER_FIELD_ID = "x-type";
|
|
|
|
public void markAsHealthCheck() {
|
|
MDC.put(LOGGER_ID, "HEALTH_CHECK");
|
|
}
|
|
|
|
public void markAsIntegrationTest() {
|
|
MDC.put(LOGGER_ID, "INTEGRATION_TEST");
|
|
}
|
|
|
|
// web client interceptor
|
|
@Override
|
|
public ClientHttpResponse intercept(
|
|
HttpRequest request,
|
|
byte[] body,
|
|
ClientHttpRequestExecution execution) throws IOException {
|
|
request.getHeaders().add(HEADER_FIELD_ID, MDC.get(LOGGER_ID));
|
|
return execution.execute(request, body);
|
|
}
|
|
|
|
// web server interceptor
|
|
@Override
|
|
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
|
|
MDC.put(LOGGER_ID, request.getHeader(HEADER_FIELD_ID));
|
|
return true;
|
|
}
|
|
|
|
}
|