Protokollierung von HttpRequest-Parametern und Anfragetext

8

Ich versuche ein Anfrageprotokoll für meine Web-App zu erstellen. Ich benutze Frühling 3. 0.

Ich habe eine Klasse implementiert, die HandlerInterceptorAdapter erweitert und die preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) verwendet, um die Anfrage abzufangen.

In der Methode möchte ich den Anfragetext protokollieren können (meine Parameter sind Objekte in XML, die direkt in den Anfragetext geschrieben werden), und dafür benutze ich request.getReader();

Das Problem ist - später bekomme ich IllegalStateException , wenn der Federcontroller versucht, die Anfrage zu lesen.

Gibt es eine Möglichkeit, das zu tun, was ich vorhabe?

    
Noam Nevo 12.06.2011, 14:03
quelle

3 Antworten

5

Sie können dies mit einem Filter tun. Die Anfrageparameter sind einfach zu handhaben. Der Umgang mit der Anfrage wird jedoch viel schwieriger und das Wrappern der Servlet-Anfrage erfordert: HttpServletRequest .

>

Sie müssen sehen, wie groß die eingehende Anfrage ist und entscheiden, ob Sie den Anfragetext als tmp-Datei oder als Zeichenfolge speichern möchten.

Sie müssen ServetRequest.getInputStream () mit Ihrer Datei oder gespeicherten Zeichenfolge überschreiben, die für die Protokollierung verwendet wurde.

Wenn der Anfragetext riesig ist, empfehle ich, den Eingabestrom in einen gepufferten Eingabestream zu setzen und dann den Anfang des Textes zu lesen.

%Vor%     
Adam Gent 12.06.2011, 14:48
quelle
4

Spring hat einen fertigen Filter, der das für Sie erledigt - siehe Verwendung von AbstractRequestLoggingFilter und seiner Unterklassen, die in diese Antwort .

Beachten Sie, dass bei Verwendung dieser Lösung der Anfragetext erst protokolliert wird, nachdem die Anfrageverarbeitung abgeschlossen und der Text von Ihrer Anwendung gelesen wurde.

    
Adam Michalik 27.11.2014 12:23
quelle
0

Einfache Implementierung für kleine Anfragen. Verwenden Sie es nicht für mehrteilige Anfrage.

%Vor%     
Eugene To 06.02.2017 12:23
quelle

Tags und Links