Spring Boot でのリクエストとレスポンスのログ記録
Spring Boot で REST API を開発する場合、リクエストとレスポンスのログ記録はデバッグの目的で重要になる可能性があります。アプリケーションの動作に関する洞察を得る。これには、成功したリクエストだけでなく、発生した例外のログも含まれます。
Spring Boot Actuator の使用
Spring Boot Actuator モジュールは、組み込みの HTTP リクエスト ログ機能を提供します。リクエストのログを有効にするには、次の手順に従います。
リクエスト ログのカスタマイズ
リクエストのロギング動作は、WebFilter を実装することで実現できます。これにより、リクエストがアプリケーションのコントローラーによって処理される前に、リクエストをインターセプトして操作できるようになります。リクエストとレスポンスをログに記録するカスタム Web フィルターの例を次に示します。
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); } }
カスタム Web フィルターと例外ハンドラーを組み合わせることで、すべてのリクエスト、応答、例外を一貫した方法でログに記録できます。
以上がSpring Boot REST API でリクエスト、レスポンス、例外を効果的に記録するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。