Wpis z mikrobloga

Chce logować każde zapytanie jakie przyjdzie do servera, czytałem że można to rozwiązać pisząc Filtr albo Interceptor. Chcę mieć dostęp do request body, które jak czytałem można odczytać tylko raz więc sugerowano aby napisać wrapper na HttpServletRequest. W przypadku Filtra wszystko działa poprawnie, ale chciałem sprawdzić to przy pomocy interceptora i mam wyjątek że getReader() zostało już wywołane. W stacktracie widzę, że leci to w jakimś filtrze więc jakby ten mój wrapper w interceptorze dalej nie był wykorzystywany czy coś. Ma ktoś jakąś radę? xD
Wrapper: https://pastebin.com/Dq04dvbT
Filter i Interceptor: https://pastebin.com/yQmAwRGb
#java
  • 3
@JI_Gorki: wydaje mi się, że musiałbyś nie tylko sklonować ale przepisywać cały strumień w jakiś własny bufor, żeby dla nowego czytającego móc wystawić całkiem świeżą kopię tego co właśnie sobie użyłeś na swoje potrzeby

jeśli potrzebujesz to tylko na potrzeby logów, to może dostosuj treść access logów gdzieś wyżej na poziomie nginx/apache, to wtedy obędzie się bez kopania ze strumieniami w javie