Rumah > Java > javaTutorial > Bagaimanakah Saya Boleh Log Permintaan, Respons dan Pengecualian dengan Berkesan dalam Spring Boot REST API Saya?

Bagaimanakah Saya Boleh Log Permintaan, Respons dan Pengecualian dengan Berkesan dalam Spring Boot REST API Saya?

Mary-Kate Olsen
Lepaskan: 2024-11-23 04:13:11
asal
373 orang telah melayarinya

How Can I Effectively Log Requests, Responses, and Exceptions in My Spring Boot REST API?

Melog Permintaan dan Respons dalam But Spring

Apabila membangunkan REST API dengan Spring Boot, permintaan log dan respons boleh menjadi penting untuk tujuan penyahpepijatan dan mendapatkan pandangan tentang tingkah laku aplikasi. Ini termasuk pengelogan bukan sahaja permintaan yang berjaya tetapi juga pengecualian yang dihadapi.

Menggunakan Spring Boot Actuator

Modul Spring Boot Actuator menyediakan ciri pengelogan permintaan HTTP terbina dalam. Untuk mendayakan pengelogan permintaan, ikut langkah berikut:

  1. Tambahkan kebergantungan spring-boot-starter-actuator pada projek anda.
  2. Konfigurasikan titik akhir untuk didedahkan (contohnya, pengurusan. endpoints.web.base-path=/actuator).
  3. Akses /trace (untuk Spring Boot 1.x) atau /actuator/httptrace (untuk Spring Boot 2.0 ) titik akhir untuk melihat 100 permintaan HTTP terakhir.

Menyesuaikan Pengelogan Permintaan

Menyesuaikan tingkah laku pengelogan permintaan boleh dicapai dengan melaksanakan Penapis Web. Ini membolehkan anda memintas dan memanipulasi permintaan sebelum ia dikendalikan oleh pengawal aplikasi anda. Berikut ialah contoh penapis web tersuai yang mencatatkan permintaan dan respons:

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.)
        });
    }
}
Salin selepas log masuk

Daftar penapis dalam aplikasi Spring Boot anda menggunakan WebFilterRegistrationBean:

@Bean
public WebFilterRegistrationBean<RequestResponseLoggingFilter> requestResponseLoggingFilter() {
    return new WebFilterRegistrationBean<>(new RequestResponseLoggingFilter());
}
Salin selepas log masuk

Mengendalikan Pengecualian

Untuk mengendalikan dan mencatat pengecualian secara seragam, anda boleh menggunakan @ExceptionHandler anotasi pada pengawal atau kelas perkhidmatan. Contohnya:

@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);
    }
}
Salin selepas log masuk

Dengan menggabungkan penapis web tersuai dengan pengendali pengecualian, anda boleh log semua permintaan, respons dan pengecualian dengan cara yang konsisten.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Log Permintaan, Respons dan Pengecualian dengan Berkesan dalam Spring Boot REST API Saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan