2016-05-02 31 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