Spring Boot에서 요청 및 응답 로깅
Spring Boot로 REST API를 개발할 때 요청 및 응답 로깅은 디버깅 목적과 애플리케이션 동작에 대한 통찰력을 얻습니다. 여기에는 성공적인 요청뿐만 아니라 발생한 예외도 기록하는 것이 포함됩니다.
Spring Boot Actuator 사용
Spring Boot Actuator 모듈은 내장된 HTTP 요청 로깅 기능을 제공합니다. 요청 로깅을 활성화하려면 다음 단계를 따르세요.
요청 로깅 사용자 정의
요청 로깅 동작을 사용자 정의하는 것은 다음과 같습니다. WebFilter를 구현하여 달성됩니다. 이를 통해 애플리케이션의 컨트롤러에서 요청을 처리하기 전에 요청을 가로채고 조작할 수 있습니다. 다음은 요청과 응답을 기록하는 사용자 정의 웹 필터의 예입니다.
public class RequestResponseLoggingFilter implements WebFilter { @Override public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) { // Log the request logRequest(exchange); // Log the response return chain.filter(exchange).then(logResponse(exchange)); } private void logRequest(ServerWebExchange exchange) { String path = exchange.getRequest().getPath().toString(); String method = exchange.getRequest().getMethodValue(); String clientIp = exchange.getRequest().getRemoteAddress().getAddress().getHostAddress(); String queryString = exchange.getRequest().getQueryParams().toString(); // ... (additional request information) } private Mono<Void> logResponse(ServerWebExchange exchange) { return exchange.getResponse().writeWith(processor -> { // ... (read the response, log the status code, response headers, etc.) }); } }
WebFilterRegistrationBean을 사용하여 Spring Boot 애플리케이션에 필터를 등록하세요.
@Bean public WebFilterRegistrationBean<RequestResponseLoggingFilter> requestResponseLoggingFilter() { return new WebFilterRegistrationBean<>(new RequestResponseLoggingFilter()); }
예외 처리
예외를 균일하게 처리하고 기록하려면 다음을 사용할 수 있습니다. 컨트롤러 또는 서비스 클래스의 @ExceptionHandler 주석입니다. 예:
@RestController public class MyController { @ExceptionHandler(Exception.class) public ResponseEntity<Error> handleException(Exception e) { // Log the exception // ... // Return the error response Error error = new Error(); error.setMessage(e.getMessage()); error.setErrorCode(101); // Custom error code return ResponseEntity.status(HttpStatus.NOT_FOUND).body(error); } }
사용자 정의 웹 필터와 예외 처리기를 결합하면 모든 요청, 응답 및 예외를 일관된 방식으로 기록할 수 있습니다.
위 내용은 Spring Boot REST API에서 요청, 응답 및 예외를 효과적으로 기록하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!