13


4

Spring RestTemplateで応答を記録するにはどうすればよいですか?

RestTemplateを使用して、Webサービスを呼び出しています。

String userId = restTemplate.getForObject(createUserUrl, String.class);

これでユーザーIDが返されない場合、nullが返されますが、理由はわかりません。 実際のXML応答をログに出力するにはどうすればよいですか?

3 Answer


11


使用しているHTTP接続を確立する方法に応じて、実際のHTTP接続クラス内でロギングを有効にすることを検討できます。

たとえば、commons HttpClientを使用している場合、設定できます

log4j.logger.httpclient.wire=DEBUG

commons-httpclientプロジェクトには、http://hc.apache.org/httpclient-3.x/logging.html [ロギングプラクティスに関するドキュメントの全ページ]があります。


9


次のようにロギングを構成します。

log4j.logger.org.springframework.web.client=DEBUG

次に、curlコマンドを使用して出力を表示します。例

curl  -H 'Accept: application/xml' -H 'Content-Type: application/xml' http://localhost:8080/ser/data

デフォルトでは、restTemplateはHttpURlConnection(SimpleClientHttpRequest経由)を使用するため、jakarta httpclientに切り替えてログステートメントを表示する必要がある場合があります。 それ以外の場合、上記のログ構成には応答が表示されます

...


2


spring-rest-template-loggerを使用して、 RestTemplate HTTPトラフィックを記録できます。

Mavenプロジェクトに依存関係を追加します。

    org.hobsoft.spring
    spring-rest-template-logger
    2.0.0

次に、次のように `RestTemplate`をカスタマイズします。

RestTemplate restTemplate = new RestTemplateBuilder()
    .customizers(new LoggingCustomizer())
    .build()

これで、すべてのRestTemplate HTTPトラフィックがデバッグレベルで `org.hobsoft.spring.resttemplatelogger.LoggingCustomizer`に記録されます。

免責事項:私はこのライブラリを書きました。