嗨,我已经配置了Zuul (spring-cloud-netflix)来使用ribbon。
在向zuul添加功能区之前,我能够在日志中看到哪个请求正在发送到zuul,以及哪些请求正在发送到相关的端点。
在某种程度上,我已经添加了ribbon和负载平衡功能。
现在我在日志中看不到传出请求(从zuul到实际端点)请求。事情运行得很好。没有错误。但是我需要知道/log incomingReq->outgoingReq在Zuul代理中的信息。我的意思是我需要路由路径信息(尤其是ip信息)。
有没有办法查看/获取此信息?如果可能的话,我想把它记录在一个过滤器里。
发布于 2016-05-02 23:59:33
我找到了一种方法来做这件事..希望这对其他人也有帮助。
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;
}
}https://stackoverflow.com/questions/36981525
复制相似问题