2016-05-02 27 views
1

嗨我已配置Zuul(spring-cloud-netflix)使用功能区。Zuul代理与功能区+ listOfServers和日志记录要求

我能够看到哪个请求要发送到zuul,并且在将功能区添加到日志中之前,哪些请求正在发送到日志中的相关端点。

在某些时候,我添加了色带&负载平衡功能。

现在我看不到日志中传出的请求(从zuul到真正的端点)请求。事情工作正常。没有错误。但我需要知道/记录Zuul代理内的incomingReq-> outgoingReq信息。我的意思是我需要路由路径信息(尤其是ip信息)。

有什么方法可以查看/获取此信息吗?如果可能,我想将它记录在过滤器中?

回答

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; 
    } 
} 
+0

这是什么AuditBean类?我从哪里进口? – codesalsa