Я работаю над rest api с загрузкой spring. Мне нужно регистрировать все запросы с входными параметрами (с помощью методов, например, 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: ...................
]
}
Я хочу, чтобы Request/Response был единственным объектом с пользовательской информацией, относящейся к этому объекту, как в случае успешного, так и в случае ошибок.
Что лучше всего подходит для spring для этого, может быть, с фильтрами? если да, можете ли вы привести конкретный пример?
(Я играл с @ControllerAdvice и @ExceptionHandler, но, как я уже упоминал, мне нужно обрабатывать все запросы успеха и ошибок в одном месте (и один журнал)).