您好我已将Zuul(spring-cloud-netflix)配置为使用功能区。
我能够看到哪些请求将发送到zuul,以及在向其添加功能区之前将哪些请求发送到日志中的相关端点。
在某些时候我添加了功能区&负载均衡功能。
现在我无法在日志中看到传出的req(从zuul到真实端点)请求。事情很好。没有错误。但我需要知道/记录Zuul代理中的incomingReq-> outgoingReq信息。我的意思是我需要路径路径信息(尤其是ip信息)。
有没有办法查看/获取此信息?我想在可能的情况下将其记录在过滤器中?
答案 0 :(得分:2)
我找到了一种方法来做到这一点...... 希望它也可以帮助其他人。
import com.netflix.client.IResponse;
import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import java.net.URI;
@Component
public class PostFilter extends ZuulFilter {
Logger auditLogger = LoggerFactory.getLogger("auditLogger");
@Override
public String filterType() {
return "post";
}
@Override
public int filterOrder() {
return 1;
}
@Override
public boolean shouldFilter() {
return true;
}
@Override
public Object run() {
RequestContext ctx = RequestContext.getCurrentContext();
URI ribbonResponseURI = ((IResponse) ctx.get("ribbonResponse")).getRequestedURI();
AuditBean auditBean = (AuditBean) RequestContext.getCurrentContext().get("auditBean");
auditBean.setIncomingURI(ctx.getRequest().getRequestURL().toString());
auditBean.setOutgoingURI(ribbonResponseURI.toString());
auditLogger.info("{}", auditBean.toJson());
return null;
}
}