Spring Boot - Как регистрировать все запросы и ответы с исключениями в одном месте?
Я работаю над отдыхом API с весенней загрузки. Мне нужно регистрировать все запросы с входными параметрами (с помощью методов, например, GET, POST и т. Д.), Пути запроса, строки запроса, соответствующего метода класса этого запроса, а также ответа на это действие, как успеха, так и ошибок.
Для примера:
успешный запрос:
http://example.com/api/users/1
Лог должен выглядеть примерно так:
{
HttpStatus: 200,
path: "api/users/1",
method: "GET",
clientIp: "0.0.0.0",
accessToken: "XHGu6as5dajshdgau6i6asdjhgjhg",
method: "UsersController.getUser",
arguments: {
id: 1
},
response: {
user: {
id: 1,
username: "user123",
email: "[email protected]"
}
},
exceptions: []
}
Или запрос с ошибкой:
http://example.com/api/users/9999
Лог должен быть примерно таким:
{
HttpStatus: 404,
errorCode: 101,
path: "api/users/9999",
method: "GET",
clientIp: "0.0.0.0",
accessToken: "XHGu6as5dajshdgau6i6asdjhgjhg",
method: "UsersController.getUser",
arguments: {
id: 9999
},
returns: {
},
exceptions: [
{
exception: "UserNotFoundException",
message: "User with id 9999 not found",
exceptionId: "adhaskldjaso98d7324kjh989",
stacktrace: ...................
]
}
Я хочу, чтобы Запрос / Ответ был единым объектом с пользовательской информацией, относящейся к этому объекту, как в случае успешного, так и в случае ошибки.
Что лучше всего делать весной, чтобы достичь этого, может быть с фильтрами? Если да, можете ли вы привести конкретный пример?
(Я играл с @ControllerAdvice и @ExceptionHandler, но, как я уже говорил, мне нужно обрабатывать все запросы об успехе и ошибках в одном месте (и в одном журнале)).