2013-05-15 13 views
7

Meine resttemplate.exchange() ist bei einer POST-Anforderung fehlgeschlagen, wobei der Server einen Fehler von 500 zurückgegeben hat.RestTemplate Protokollierung der POST-Daten

Ich habe versucht, die Root-Protokollierung auf DEBUG, aber nichts wurde protokolliert, bevor der Fehler 500 zurückgegeben wurde. um sicherzustellen, dass meine Protokollierung Config richtig ist, habe ich eine Zeile vor dem resttemplate Anruf

HttpClient client = new DefaultHttpClient(); 
client.execute(new HttpGet("http://google.com")); 

in diesem Fall in der Tat erschien eine Menge von Log-Meldungen.

Wie kann ich also RestTemplate die Debugging-Daten exportieren lassen?

Dank Yang

Antwort

10

Aus Ihrer Analyse scheint es, dass Sie RestTemplate erwarten Apache Httpclient zu verwenden.

Standardmäßig verwendet Spring RestTemplate jedoch nicht Apache HttpClient, sondern verwendet die JDK-Funktionen (java.net.URL # openConnection() usw.) mithilfe von SimpleClientHttpRequestFactory.

org.springframework.http.client.support.HttpAccessor erklärt:

private ClientHttpRequestFactory requestFactory = new 
SimpleClientHttpRequestFactory(); 

Soweit ich weiß, dieser Client nicht Protokollierung Anfragen/Antworten nicht unterstützt.

Um RestTemplate Httpclient zu verwenden, zu ändern, versuchen Sie dies:

new RestTemplate(new HttpComponentsClientHttpRequestFactory()); 

Logging Konfiguration dann Kategorie org.apache.http.wire auf der Ebene ermöglichen sollte debug für eine vollständige Anfragen/Antworten protokolliert werden.

+0

Nicht sicher, ob dies versionsabhängig ist, aber die Einstellung debug für org.apache.http.wire funktioniert bei Spring RestTemplate nicht für mich. – IcedDante

+0

org.springframework.http hinzufügen = DEBUG funktioniert für mich –