我使用 Spring RestTemplate 已经有一段时间了,当我尝试调试它的请求和响应时,我总是碰壁。我基本上希望看到与打开“详细”选项使用 curl 时看到的相同的东西。例如 :
curl -v http://twitter.com/statuses/public_timeline.rss
将显示发送的数据和接收的数据(包括标头、cookie 等)。
我检查了一些相关的帖子,例如: 如何在 Spring RestTemplate 中记录响应? 但我还没有设法解决这个问题。
一种方法是实际更改 RestTemplate 源代码并在那里添加一些额外的日志记录语句,但我会发现这种方法确实是最后的手段。应该有一些方法可以告诉 Spring Web Client/RestTemplate 以更友好的方式记录所有内容。
我的目标是能够使用以下代码做到这一点:
restTemplate.put("http://someurl", objectToPut, urlPathValues);
然后在日志文件或控制台中获得相同类型的调试信息(就像我使用 curl 获得的那样)。我相信这对于使用 Spring RestTemplate 并遇到问题的任何人都非常有用。使用 curl 来调试您的 RestTemplate 问题只是不起作用(在某些情况下)。
原文由 Paul Sabou 发布,翻译遵循 CC BY-SA 4.0 许可协议
我终于找到了一种以正确方式做到这一点的方法。大多数解决方案来自 How do I configure Spring and SLF4J so I can get logging?
似乎有两件事需要做:
log4j.logger.httpclient.wire=DEBUG
第二个问题主要发生在使用 slf4j 的 spring 环境中(就像我的情况一样)。因此,当使用 slf4j 时,请确保发生以下两件事: