我在使用 Quarkus 中的 REST 客户端(使用 org.eclipse.microprofile.rest.client.RestClientBuilder 构建)调用服务器上的 REST 端点时遇到问题。我非常想通过将 HTTP 请求和响应写入日志来调试服务,这样我就可以看到实际发送到服务器的内容。然而,我一直未能找到针对该特定问题的指南。 我设法构建了一个日志过滤器,但只记录了 URL 和实体 toString 值,这与发送的 HTTP 请求和响应完全不同。 请帮助我找到记录实际 HTTP 请求和响应的解决方案。
如果您使用 Resteasy React,您可以使用以下命令打开日志记录:
quarkus.rest-client.logging.scope=request-response
quarkus.rest-client.logging.body-limit=1024
quarkus.log.category."org.jboss.resteasy.reactive.client.logging".level=DEBUG
检查这个:https://quarkus.io/guides/resteasy-reactive#the-jax-rs-way
只需实现该类,您就可以开始记录。像这样:
@Provider
class LoggingFilter implements ContainerRequestFilter,
ContainerResponseFilter {
/* Useful stuff for later development purposes.
@Context
UriInfo info;
@Context
HttpServerRequest request;
*/
@Override
public void filter(ContainerRequestContext requestContext) {
Log.info(requestContext);
}
@Override
public void filter(ContainerRequestContext requestContext,
ContainerResponseContext responseContext) {
Log.info(responseContext);
}
}
然后您可以使用 UriInfo、HttpServerRequest 和 ContainerRequestContext 来获取您想要的任何数据并将其添加到您的自定义日志中。
另一种更简单的方法,可能就足够了:
将这些配置添加到您的 application.properties 中。
quarkus.rest-client.logging.scope=request-response
quarkus.rest-client.logging.body-limit=5000
quarkus.log.category."org.jboss.resteasy.reactive.client.logging".level=DEBUG
参考:https://quarkus.io/guides/rest-client-reactive#logging-traffic