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, но, как я уже говорил, мне нужно обрабатывать все запросы об успехе и ошибках в одном месте (и в одном журнале)).

Ответы на вопрос(18)

Ваш ответ на вопрос