@@ -24,125 +24,145 @@ public class CustomExceptionHandler extends ResponseEntityExceptionHandler {
2424
2525 @ ExceptionHandler (LinhasNotFoundException .class )
2626 public ResponseEntity <ErrorResponse > linhasNotFoundException (LinhasNotFoundException ex , HttpServletRequest request ) {
27- logger .warn ("Recurso não encontrado" ,
27+ String clientIp = ClientIpUtils .getClientIp (request );
28+ logger .warn ("Recurso não encontrado | {} {} | IP: {} | Detalhe: {}" ,
29+ request .getMethod (), request .getRequestURI (), clientIp , ex .getMessage (),
2830 kv ("exception" , ex .getClass ().getSimpleName ()),
2931 kv ("status" , HttpStatus .NOT_FOUND ),
3032 kv ("detail" , ex .getMessage ()),
3133 kv ("path" , request .getRequestURI ()),
3234 kv ("method" , request .getMethod ()),
33- kv ("client_ip" , ClientIpUtils . getClientIp ( request ) ));
35+ kv ("client_ip" , clientIp ));
3436 return ErrorResponse .of ("Não foi encontrada nenhuma linha, por favor tente novamente" , HttpStatus .NOT_FOUND );
3537 }
3638
3739 @ ExceptionHandler (CoordenadasNotFoundException .class )
3840 public ResponseEntity <ErrorResponse > coordenadasNotFoundException (CoordenadasNotFoundException ex , HttpServletRequest request ) {
39- logger .warn ("Recurso não encontrado" ,
41+ String clientIp = ClientIpUtils .getClientIp (request );
42+ logger .warn ("Recurso não encontrado | {} {} | IP: {} | Detalhe: {}" ,
43+ request .getMethod (), request .getRequestURI (), clientIp , ex .getMessage (),
4044 kv ("exception" , ex .getClass ().getSimpleName ()),
4145 kv ("status" , HttpStatus .NOT_FOUND ),
4246 kv ("detail" , ex .getMessage ()),
4347 kv ("path" , request .getRequestURI ()),
4448 kv ("method" , request .getMethod ()),
45- kv ("client_ip" , ClientIpUtils . getClientIp ( request ) ));
49+ kv ("client_ip" , clientIp ));
4650 return ErrorResponse .of ("Não foi encontrada nenhuma coordenada, por favor tente novamente" ,
4751 HttpStatus .NOT_FOUND );
4852 }
4953
5054 @ ExceptionHandler (DicionarioNotFoundException .class )
5155 public ResponseEntity <ErrorResponse > dicionarioNotFoundException (DicionarioNotFoundException ex , HttpServletRequest request ) {
52- logger .warn ("Recurso não encontrado" ,
56+ String clientIp = ClientIpUtils .getClientIp (request );
57+ logger .warn ("Recurso não encontrado | {} {} | IP: {} | Detalhe: {}" ,
58+ request .getMethod (), request .getRequestURI (), clientIp , ex .getMessage (),
5359 kv ("exception" , ex .getClass ().getSimpleName ()),
5460 kv ("status" , HttpStatus .NOT_FOUND ),
5561 kv ("detail" , ex .getMessage ()),
5662 kv ("path" , request .getRequestURI ()),
5763 kv ("method" , request .getMethod ()),
58- kv ("client_ip" , ClientIpUtils . getClientIp ( request ) ));
64+ kv ("client_ip" , clientIp ));
5965 return ErrorResponse .of ("Não foi encontrado o dicionário para os dados, por favor tente novamente" ,
6066 HttpStatus .NOT_FOUND );
6167 }
6268
6369 @ ExceptionHandler (LinhaNotFoundException .class )
6470 public ResponseEntity <ErrorResponse > linhaNotFoundException (LinhaNotFoundException ex , HttpServletRequest request ) {
65- logger .warn ("Recurso não encontrado" ,
71+ String clientIp = ClientIpUtils .getClientIp (request );
72+ logger .warn ("Recurso não encontrado | {} {} | IP: {} | Detalhe: {}" ,
73+ request .getMethod (), request .getRequestURI (), clientIp , ex .getMessage (),
6674 kv ("exception" , ex .getClass ().getSimpleName ()),
6775 kv ("status" , HttpStatus .NOT_FOUND ),
6876 kv ("detail" , ex .getMessage ()),
6977 kv ("path" , request .getRequestURI ()),
7078 kv ("method" , request .getMethod ()),
71- kv ("client_ip" , ClientIpUtils . getClientIp ( request ) ));
79+ kv ("client_ip" , clientIp ));
7280 return ErrorResponse .of ("Não foi encontrada nenhuma linha, por favor tente novamente" , HttpStatus .NOT_FOUND );
7381 }
7482
7583 @ ExceptionHandler (ValidJsonException .class )
7684 public ResponseEntity <ErrorResponse > validJsonException (ValidJsonException ex , HttpServletRequest request ) {
77- logger .warn ("Erro de validação JSON" ,
85+ String clientIp = ClientIpUtils .getClientIp (request );
86+ logger .warn ("Erro de validação JSON | {} {} | IP: {} | Detalhe: {}" ,
87+ request .getMethod (), request .getRequestURI (), clientIp , ex .getMessage (),
7888 kv ("exception" , ex .getClass ().getSimpleName ()),
7989 kv ("status" , HttpStatus .BAD_REQUEST ),
8090 kv ("detail" , ex .getMessage ()),
8191 kv ("path" , request .getRequestURI ()),
8292 kv ("method" , request .getMethod ()),
83- kv ("client_ip" , ClientIpUtils . getClientIp ( request ) ));
93+ kv ("client_ip" , clientIp ));
8494 return ErrorResponse .of (ex .getMessage (), HttpStatus .BAD_REQUEST );
8595 }
8696
8797 @ ExceptionHandler (RuntimeException .class )
8898 public ResponseEntity <ErrorResponse > runtimeException (RuntimeException ex , HttpServletRequest request ) {
89- logger .error ("Erro interno não tratado" ,
99+ String clientIp = ClientIpUtils .getClientIp (request );
100+ logger .error ("Erro interno não tratado | {} {} | IP: {} | Detalhe: {}" ,
101+ request .getMethod (), request .getRequestURI (), clientIp , ex .getMessage (),
90102 kv ("exception" , ex .getClass ().getSimpleName ()),
91103 kv ("status" , HttpStatus .INTERNAL_SERVER_ERROR ),
92104 kv ("detail" , ex .getMessage ()),
93105 kv ("path" , request .getRequestURI ()),
94106 kv ("method" , request .getMethod ()),
95- kv ("client_ip" , ClientIpUtils . getClientIp ( request ) ),
107+ kv ("client_ip" , clientIp ),
96108 ex );
97109 return ErrorResponse .of ("Ocorreu um erro interno, por favor tente novamente" , HttpStatus .INTERNAL_SERVER_ERROR );
98110 }
99111
100112 @ ExceptionHandler (IOException .class )
101113 public ResponseEntity <ErrorResponse > ioException (IOException ex , HttpServletRequest request ) {
102- logger .error ("Erro interno não tratado" ,
114+ String clientIp = ClientIpUtils .getClientIp (request );
115+ logger .error ("Erro interno não tratado | {} {} | IP: {} | Detalhe: {}" ,
116+ request .getMethod (), request .getRequestURI (), clientIp , ex .getMessage (),
103117 kv ("exception" , ex .getClass ().getSimpleName ()),
104118 kv ("status" , HttpStatus .INTERNAL_SERVER_ERROR ),
105119 kv ("detail" , ex .getMessage ()),
106120 kv ("path" , request .getRequestURI ()),
107121 kv ("method" , request .getMethod ()),
108- kv ("client_ip" , ClientIpUtils . getClientIp ( request ) ),
122+ kv ("client_ip" , clientIp ),
109123 ex );
110124 return ErrorResponse .of ("Ocorreu um erro interno, por favor tente novamente" , HttpStatus .INTERNAL_SERVER_ERROR );
111125 }
112126
113127 @ ExceptionHandler (NoResourceFoundException .class )
114128 public ResponseEntity <ErrorResponse > noResourceFoundException (NoResourceFoundException ex , HttpServletRequest request ) {
115- logger .warn ("Recurso não encontrado" ,
129+ String clientIp = ClientIpUtils .getClientIp (request );
130+ logger .warn ("Recurso não encontrado | {} {} | IP: {} | Detalhe: {}" ,
131+ request .getMethod (), request .getRequestURI (), clientIp , ex .getMessage (),
116132 kv ("exception" , ex .getClass ().getSimpleName ()),
117133 kv ("status" , HttpStatus .NOT_FOUND ),
118134 kv ("detail" , ex .getMessage ()),
119135 kv ("path" , request .getRequestURI ()),
120136 kv ("method" , request .getMethod ()),
121- kv ("client_ip" , ClientIpUtils . getClientIp ( request ) ));
137+ kv ("client_ip" , clientIp ));
122138 return ErrorResponse .of ("Verifique a rota digitada ou os dados enviados" , HttpStatus .NOT_FOUND );
123139 }
124140
125141 @ ExceptionHandler (NoHandlerFoundException .class )
126142 public ResponseEntity <ErrorResponse > noHandlerFoundException (NoHandlerFoundException ex , HttpServletRequest request ) {
127- logger .warn ("Recurso não encontrado" ,
143+ String clientIp = ClientIpUtils .getClientIp (request );
144+ logger .warn ("Recurso não encontrado | {} {} | IP: {} | Detalhe: {}" ,
145+ request .getMethod (), request .getRequestURI (), clientIp , ex .getMessage (),
128146 kv ("exception" , ex .getClass ().getSimpleName ()),
129147 kv ("status" , HttpStatus .NOT_FOUND ),
130148 kv ("detail" , ex .getMessage ()),
131149 kv ("path" , request .getRequestURI ()),
132150 kv ("method" , request .getMethod ()),
133- kv ("client_ip" , ClientIpUtils . getClientIp ( request ) ));
151+ kv ("client_ip" , clientIp ));
134152 return ErrorResponse .of ("Verifique a rota digitada ou os dados enviados" , HttpStatus .NOT_FOUND );
135153 }
136154
137155 @ ExceptionHandler (RateLimitExceededException .class )
138156 public ResponseEntity <ErrorResponse > rateLimitExceededException (RateLimitExceededException ex , HttpServletRequest request ) {
139- logger .warn ("Rate limit excedido" ,
157+ String clientIp = ClientIpUtils .getClientIp (request );
158+ logger .warn ("Rate limit excedido | {} {} | IP: {} | Retry-After: {}s" ,
159+ request .getMethod (), request .getRequestURI (), clientIp , ex .getRetryAfterSeconds (),
140160 kv ("exception" , ex .getClass ().getSimpleName ()),
141161 kv ("status" , HttpStatus .TOO_MANY_REQUESTS ),
142162 kv ("retry_after" , ex .getRetryAfterSeconds ()),
143163 kv ("path" , request .getRequestURI ()),
144164 kv ("method" , request .getMethod ()),
145- kv ("client_ip" , ClientIpUtils . getClientIp ( request ) ));
165+ kv ("client_ip" , clientIp ));
146166 return ResponseEntity .status (HttpStatus .TOO_MANY_REQUESTS )
147167 .header ("X-Rate-Limit-Retry-After-Seconds" , String .valueOf (ex .getRetryAfterSeconds ()))
148168 .body (new ErrorResponse (java .time .LocalDateTime .now (), ex .getMessage (), HttpStatus .TOO_MANY_REQUESTS ));
0 commit comments