Anfragen und Antworten in Spring Boot protokollieren
Bei der Entwicklung von REST-APIs mit Spring Boot kann die Protokollierung von Anfragen und Antworten für Debugging-Zwecke und entscheidend sein Einblicke in das Anwendungsverhalten gewinnen. Dazu gehört die Protokollierung nicht nur erfolgreicher Anfragen, sondern auch aufgetretener Ausnahmen.
Verwendung von Spring Boot Actuator
Das Spring Boot Actuator-Modul bietet eine integrierte HTTP-Anfrageprotokollierungsfunktion. Um die Anforderungsprotokollierung zu aktivieren, führen Sie die folgenden Schritte aus:
Anforderungsprotokollierung anpassen
Das Anforderungsprotokollierungsverhalten kann angepasst werden Dies wird durch die Implementierung eines WebFilters erreicht. Dadurch können Sie Anfragen abfangen und manipulieren, bevor sie von den Controllern Ihrer Anwendung verarbeitet werden. Hier ist ein Beispiel für einen benutzerdefinierten Webfilter, der Anfragen und Antworten protokolliert:
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.) }); } }
Registrieren Sie den Filter in Ihrer Spring Boot-Anwendung mit WebFilterRegistrationBean:
@Bean public WebFilterRegistrationBean<RequestResponseLoggingFilter> requestResponseLoggingFilter() { return new WebFilterRegistrationBean<>(new RequestResponseLoggingFilter()); }
Behandlung von Ausnahmen
Um Ausnahmen einheitlich zu behandeln und zu protokollieren, können Sie die Annotation @ExceptionHandler auf einem Controller verwenden oder Serviceklasse. Zum Beispiel:
@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); } }
Durch die Kombination des benutzerdefinierten Webfilters mit dem Ausnahmehandler können Sie alle Anfragen, Antworten und Ausnahmen konsistent protokollieren.
Das obige ist der detaillierte Inhalt vonWie kann ich Anforderungen, Antworten und Ausnahmen effektiv in meiner Spring Boot-REST-API protokollieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!